আমি কীভাবে একটি ডিভিতে একটি এসভিজি কেন্দ্র করব?


252

আমার একটি এসভিজি রয়েছে যা আমি একটি ডিভের মধ্যে কেনার চেষ্টা করছি। ডিভের প্রস্থ বা 900px রয়েছে। এসভিজির প্রস্থ 400px রয়েছে। এসভিজির অটোতে মার্জিন-বাম এবং মার্জিন-ডান সেট রয়েছে। কাজ করে না, এটি কেবল বাম মার্জিন 0 (ডিফল্ট) হিসাবে কাজ করে।

আমার ত্রুটি কেউ জানেন?

উত্তর:


459

এসভিজি ডিফল্টরূপে ইনলাইন। যোগ display: blockএটি এবং তারপর margin: autoআশানুরূপ কাজ হবে।


10
খুব নিশ্চিতভাবে এর অর্থ এটিও রয়েছে যে পাঠ্য-প্রান্তিককরণ: মূল উপাদানটির কেন্দ্রটি খুব বেশি কাজ করবে (এটি আমার পক্ষে ক্রোমে কাজ করে)
নাথান

29

উপরের উত্তরগুলি আমার পক্ষে কার্যকর হয়নি। ট্যাগটিতে অ্যাট্রিবিউট যুক্ত preserveAspectRatio="xMidYMin"করা <svg>কৌতুকটি করেছে। এর viewBoxপাশাপাশি কাজ করার জন্য অ্যাট্রিবিউটটি নির্দিষ্ট করা দরকার। সূত্র: মজিলা বিকাশকারী নেটওয়ার্ক


7
আমার বর্তমান পদ্ধতিটি ফ্লেক্সবক্স। কেবল যুক্ত করুন: .container { display: flex; justify-content: center; }এবং ডিভিতে। কনটেনার ক্লাস যুক্ত করুন যা আপনার এসভিজি।
এ্যাসগার

1
এই নতুন পদ্ধতির সাথে আরও একটি উত্তর যুক্ত করার বিষয়টি বিবেচনা করুন যাতে আমি এটি আপভোট করতে পারি। আপনার সাহায্যের জন্য ধন্যবাদ!
ক্রিস পিটার্স

24

ডিফল্টরূপে এস.জি.জি. ইনলাইন হ'ল উপরে পড়ে, আমি কেবল ডিভটিতে নিম্নলিখিতটি যুক্ত করেছি:

<div style="text-align:center;">

এবং এটি আমার জন্য কৌশলটি করেছে।

পিউরিস্টরা এটি পছন্দ করতে পারে না (এটি কোনও চিত্র নয়, পাঠ্য নয়) তবে আমার মতে এইচটিএমএল এবং সিএসএস কেন্দ্রীকরণের উপর জড়িয়ে পড়েছে, তাই আমি মনে করি এটি ন্যায়সঙ্গত।


এর জন্য ধন্যবাদ. সহজ এবং কার্যকর। ভিউপোর্ট এবং ভিউবক্সের সাথে ঘন্টার পর ঘন্টা গণ্ডগোল করছে। এই কৌশলটি কয়েক সেকেন্ডের মধ্যেই করল। মূর্খ জিনিসটি কেবল একটি ডিভিতে জড়িয়ে রাখুন এবং এটি কেন্দ্র করুন।
anon58192932

@ anon58192932 - আপনি খুব স্বাগতম। এটি নির্বোধের মতো সহজ, তবে সন্তোষজনক যে এটি অন্যদের কাছে ব্যবহারের হিসাবে আমি এখানে প্রশ্নগুলির আরও অনেক পরিশীলিত উত্তর থেকে উপকৃত হয়েছি।
ডেভিড

20

এই উত্তরগুলির কোনওোটাই আমার পক্ষে কাজ করেনি। এইভাবে আমি এটি করেছি।

position: relative;
left: 50%;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);

3
কেন জানি না, তবে আমাকে ব্যবহার করতে হয়েছিলleft: 100%
Luís Deschamps Rudge

16

উপরের উত্তরগুলি অসম্পূর্ণ দেখায় কারণ তারা কেবল সিএসএস দৃষ্টিকোণ থেকে কথা বলছে।

ভিউপোর্টের মধ্যে এসভিজির অবস্থান দুটি এসভিজি বৈশিষ্ট্য দ্বারা প্রভাবিত হয়

  1. ভিউবক্স: কভার করার জন্য আয়তক্ষেত্র অঞ্চলটি সংজ্ঞায়িত করে।
  2. preservAspectRatio: ভিউবক্স আর্ট ভিউপোর্ট কোথায় রাখবেন এবং ভিউপোর্টে পরিবর্তন হলে এটি কীভাবে প্রসারিত করবেন তা নির্ধারণ করা হয়েছে।

বিস্তারিত বর্ণনার জন্য কোডেকেন থেকে এই লিঙ্কটি অনুসরণ করুন

<svg viewBox="70 160 800 190" preserveAspectRatio="xMaxYMax meet">


4

আপনার সিএসএস পড়ে তা নিশ্চিত করুন:

margin: 0 auto;

যদিও আপনি বলছেন যে আপনার বাম এবং ডানটি স্বয়ংক্রিয়ভাবে সেট করা আছে, আপনি একটি ত্রুটি স্থাপন করতে পারেন। অবশ্যই আমরা জানতাম না কারণ আপনি আমাদের কোনও কোড দেখাননি।


3

আপনি এটি করতে পারেন:

<center>
<div style="width: 40px; height: 40px;">
    <svg class="sqs-svg-icon--social" viewBox="0 0 64 64">
        <use class="sqs-use--icon" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#twitter-icon">
            <svg id="twitter-icon" viewBox="0 0 64 64" width="100%" height="100%">
                <path
                    d="M48,22.1c-1.2,0.5-2.4,0.9-3.8,1c1.4-0.8,2.4-2.1,2.9-3.6c-1.3,0.8-2.7,1.3-4.2,1.6 C41.7,19.8,40,19,38.2,19c-3.6,0-6.6,2.9-6.6,6.6c0,0.5,0.1,1,0.2,1.5c-5.5-0.3-10.3-2.9-13.5-6.9c-0.6,1-0.9,2.1-0.9,3.3 c0,2.3,1.2,4.3,2.9,5.5c-1.1,0-2.1-0.3-3-0.8c0,0,0,0.1,0,0.1c0,3.2,2.3,5.8,5.3,6.4c-0.6,0.1-1.1,0.2-1.7,0.2c-0.4,0-0.8,0-1.2-0.1 c0.8,2.6,3.3,4.5,6.1,4.6c-2.2,1.8-5.1,2.8-8.2,2.8c-0.5,0-1.1,0-1.6-0.1c2.9,1.9,6.4,2.9,10.1,2.9c12.1,0,18.7-10,18.7-18.7 c0-0.3,0-0.6,0-0.8C46,24.5,47.1,23.4,48,22.1z"
                    />
            </svg>
        </use>
    </svg>
</div>
</center>

2

divআপনি যদি বুটস্ট্র্যাপ ব্যবহার করেন তবে এর মধ্যে আপনার কোডটি রাখুন :

  <div class="text-center ">
  <i class="fa fa-twitter" style="font-size:36px "></i>
  <i class="fa fa-pinterest" style="font-size:36px"></i>
  <i class="fa fa-dribbble" style="font-size:36px"></i>
  <i class="fa fa-instagram" style="font-size:36px"></i>
  </div>

2

ফ্লেক্সবক্স হ'ল আরেকটি পন্থা: ডিভের সাথে ক্লাস .container { display: flex; justify-content: center; }যুক্ত করুন এবং .containerএতে আপনার এসভিজি রয়েছে।


0

আমার জন্য, ফিক্সটি ছিল যুক্ত margin: 0 auto;উপাদানটিতে যুক্ত করা <svg>

এটার মত:

<div style="margin: 0 auto">
   <svg ...</svg>
</div>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.