স্প্যান বনাম ডিআইভি (ইনলাইন-ব্লক)


140

কোনও ওয়েবপৃষ্ঠা বিন্যাস করার <div style="display:inline-block">পরিবর্তে এর পরিবর্তে ব্যবহার করার কোনও কারণ আছে <span>?

আমি কি স্প্যানের ভিতরে বাসা বাঁধতে পারি? কোনটি বৈধ এবং কোনটি নয়?

লেক্সের মতো একটি 3x2 টেবিল তৈরি করতে এটি ব্যবহার করা ঠিক আছে?

<div>
   <span> content1(divs,p, spans, etc) </span>
   <span> content2(divs,p, spans, etc) </span>
   <span> content3(divs,p, spans, etc) </span>
</div>
<div>
   <span> content4(divs,p, spans, etc) </span>
   <span> content5(divs,p, spans, etc) </span>
   <span> content6(divs,p, spans, etc) </span>
</div>

16
আপনি যদি কোনও বৈধ এক্সএইচটিএমএল ডকুমেন্টের জন্য যাচ্ছেন তবে আপনি ইনলাইন উপাদানের ভিতরে ব্লক স্তরের উপাদান রাখতে পারবেন না।
মুরজ

1
উপর HTML উপাদানগুলি উইকি en.wikipedia.org/wiki/HTML_element
moorej

উত্তর:


187

এইচটিএমএল অনুমান অনুসারে , <span>একটি ইনলাইন উপাদান এবং <div>এটি একটি ব্লক উপাদান। displayসিএসএস সম্পত্তি ব্যবহার করে এখন এটি পরিবর্তন করা যেতে পারে তবে একটি সমস্যা রয়েছে: এইচটিএমএল বৈধতার শর্তাবলী, আপনি ব্লক উপাদানগুলিকে ইনলাইন উপাদানের ভিতরে রাখতে পারবেন না:

<p>...<div>foo</div>...</p>

কঠোরভাবে বৈধ এমনকি যদি আপনি পরিবর্তন নয় <div>করার inlineবা inline-block

সুতরাং, যদি আপনার উপাদান হয় inlineবা inline-blockব্যবহার করে <span>। যদি এটি একটি blockস্তর উপাদান, একটি ব্যবহার করুন <div>


1
হ্যাঁ, আপনি একটি স্প্যান স্টাইল করতে পারেন এবং এটি একটি ডিভের মতোই আচরণ করতে পারেন
ডেভ

1
এর সাথে আমার inline-blockআরও ঘনিষ্ঠ সম্পর্ক রয়েছে বলে আমি একমত inlineহতে চাই block
বব আমান

11
মূল প্রশ্নটি বৈধ এবং বৈধতার জন্য কী, <span>এবং <div>প্রকৃতপক্ষে পৃথক, যেমন <span>একটি ইনলাইন উপাদান ( যেমন একটির মধ্যে বৈধ <p>), যখন <div>একটি ব্লক উপাদান (এটির মধ্যে বৈধ নয় <p>)।
ব্রায়ান ক্যাম্পবেল

8
@ ক্লেটাস <p> একটি ব্লক উপাদান নয়?
এরিস

8
<p>হ'ল একটি ব্লক উপাদান যা "ব্লক-স্তরের উপাদানগুলি ধারণ করতে পারে না" ( লিঙ্ক ), সুতরাং উদাহরণটি অবৈধ হলেও <p>এটি ইনলাইন হওয়ার কারণে নয় ।
পেরো পি।

19

আপনি যদি একটি বৈধ এক্সএইচটিএমএল ডকুমেন্ট রাখতে চান তবে আপনি অনুচ্ছেদের ভিতরে একটি ডিভ রাখতে পারবেন না।

এছাড়াও, সম্পত্তি প্রদর্শন সহ একটি ডিভিও: ইনলাইন-ব্লকটি স্প্যানের চেয়ে আলাদাভাবে কাজ করে। একটি স্প্যানটি ডিফল্টরূপে একটি ইনলাইন উপাদান হয়, আপনি ব্লকের সাথে যুক্ত প্রস্থ, উচ্চতা এবং অন্যান্য বৈশিষ্ট্যগুলি সেট করতে পারবেন না। অন্যদিকে, সম্পত্তি ইনলাইন-ব্লক সহ একটি উপাদান এখনও আশেপাশের কোনও পাঠ্যের সাথে "প্রবাহ" করবে তবে আপনি প্রস্থ, উচ্চতা ইত্যাদির মতো বৈশিষ্ট্য নির্ধারণ করতে পারেন সম্পত্তি প্রদর্শন সহ একটি স্প্যান: ব্লক একইভাবে প্রবাহিত হবে না একটি ইনলাইন-ব্লক উপাদান হিসাবে তবে ক্যারিজ রিটার্ন তৈরি করবে এবং এতে ডিফল্ট মার্জিন থাকবে।

নোট করুন যে সমস্ত ব্রাউজারে ইনলাইন-ব্লক সমর্থিত নয়। উদাহরণস্বরূপ ফায়ারফক্স ২ এবং এর চেয়ে কম আপনার অবশ্যই ব্যবহার করতে হবে:

display: -moz-inline-stack;

যা এফএফ 3 এ একটি ইনলাইন ব্লক উপাদানের চেয়ে কিছুটা আলাদা দেখায়।

ক্রস ব্রাউজার ইনলাইন-ব্লক উপাদান তৈরি করতে এখানে একটি দুর্দান্ত নিবন্ধ রয়েছে।


-মজ-ইনলাইন-ব্লক ইনলাইন-ব্লক করে না।
মুরজ

আপনি যদি এফএফ 3 এ আরও বেশি ইনলাইন ব্লক প্রদর্শন করতে চান তবে আপনার অবশ্যই ইনলাইন স্ট্যাকটি ব্যবহার করা উচিত।
মুরজ

খুব আকর্ষণীয় লিঙ্কের জন্য +1। অনেক সময় এসেছে যে ইনলাইন-ব্লকটি বেশ কয়েকটি সমস্যার সমাধান করতে পারে।
টম

5
  1. ইনলাইন-ব্লক একটি এলিমেন্টের প্রদর্শনকে ইনলাইনে বা ব্লক করার জন্য একটি অর্ধেক পয়েন্ট। এটি ডকুমেন্টের ইনলাইন প্রবাহে প্রদর্শনের মতো উপাদানটিকে রাখে: ইনলাইন করে, তবে আপনি প্রদর্শনটির সাথে: এলক্টের মতো উপাদানটির বাক্সের বৈশিষ্ট্যগুলি (প্রস্থ, উচ্চতা এবং উল্লম্ব মার্জিন )গুলিকে ম্যানিপুলেট করতে পারবেন।

  2. আমাদের অবশ্যই ইনলাইন উপাদানগুলির মধ্যে ব্লক উপাদান ব্যবহার করা উচিত নয়। এটি অবৈধ এবং এ জাতীয় অনুশীলনগুলি করার কোনও কারণ নেই।


3

আমি জানি এই প্রশ্নটি পুরানো, তবে কেন স্প্যানগুলির পরিবর্তে সমস্ত ডিআইভি ব্যবহার করবেন না? তারপরে সব কিছু এক সাথে সুখী হয়।

উদাহরণ:

<div> 
   <div> content1(divs,p, spans, etc) </div> 
   <div> content2(divs,p, spans, etc) </div> 
   <div> content3(divs,p, spans, etc) </div> 
</div> 
<div> 
   <div> content4(divs,p, spans, etc) </div> 
   <div> content5(divs,p, spans, etc) </div> 
   <div> content6(divs,p, spans, etc) </div> 
</div>

1
আমি মনে করি যে লক্ষ্যটি যতটা সম্ভব পাতলা এবং শব্দার্থক হিসাবে রাখা। সুতরাং আপনার যদি একটি শিরোনাম থাকে এবং আপনি একটি অভ্যন্তরীণ মোড়ক ডিভিও চান - এটি <em> বলে মনে হতে পারে </ em> আরও সিমেন্টিক: হেডার {} এবং শিরোনামের স্প্যান}} তবে এটিতে শিরোনাম {} এবং ইনার {have থাকতে পারে would । তবে ... আপনি যদি ইনারটি ব্যবহার করেন তবে আপনি এটি বহুবার ব্যবহার করতে পারেন - স্প্যানগুলি সম্ভবত স্বাধীনভাবে স্টাইল করতে হবে। নীচের লাইন - আপনি যতটা সম্ভব কম মার্কআপ ব্যবহার করতে চান - তাই লোকেরা </ div> বিভাগ> বিভাজন ইত্যাদি এড়ানোর উপায়গুলি বের করার চেষ্টা করছেন
শেরিফডেরেক

3

"ডিসপ্লে: ইনলাইন-ব্লক" এতটাই দরকারী কেন তা বুঝতে, এটি আপনাকে ইনলাইন-এলিমেন্টগুলির (যেমন স্প্যান) এবং ব্লক-উপাদানগুলির (উদাহরণস্বরূপ Div) মধ্যে মৌলিক পার্থক্য বুঝতে সহায়তা করবে think

সমস্যা : ইনলাইন উপাদান (যেমন স্প্যান, এ, বোতাম, ইনপুট ইত্যাদি) উল্লম্বভাবে নয়, কেবল অনুভূমিকভাবে (মার্জিন-বাম এবং মার্জিন-ডান) "মার্জিন" নেয়। উল্লম্ব ব্যবধান কেবল ব্লক উপাদানগুলিতে কাজ করে (বা যদি "প্রদর্শন: ব্লক" সেট করা থাকে)

সমাধান : কেবলমাত্র "প্রদর্শন: ইনলাইন-ব্লক" এর মাধ্যমে উল্লম্ব দূরত্ব (উপরে এবং নীচে) নেওয়া হবে will কারণ: ইনলাইন উপাদান স্প্যান, এখন বাইরে থেকে একটি ব্লক উপাদানটির মতো আচরণ করে, তবে ভিতরে ভিতরে কোনও ইনলাইন উপাদানের মতো আচরণ করে

এখানে কোড উদাহরণ:

 /* Inlineelement */

        div,
        span {
            margin: 30px;
        }

        span {
            outline: firebrick dotted medium;
            background-color: antiquewhite;
        }

        span.mitDisplayBlock {
            background: #a2a2a2;
            display: block;
            width: 200px;
            height: 200px;
        }

        span.beispielMargin {
            margin: 20px;
        }

        span.beispielMarginDisplayInlineBlock {
            display: inline-block;
        }

        span.beispielMarginDisplayInline {
            display: inline;
        }

        span.beispielMarginDisplayBlock {
            display: block;
        }

        /* Blockelement */

        div {
            outline: orange dotted medium;
            background-color: deepskyblue;
        }

        .paddingDiv {
            padding: 20px;
            background-color: blanchedalmond;
        }

        .marginDivWrapper {
            background-color: aliceblue;

        }

        .marginDiv {
            margin: 20px;
            background-color: blanchedalmond;
        }
    </style>
    <style>
        /* Nur für das w3school Bild */

        #w3_DIV_1 {
            bottom: 0px;
            box-sizing: border-box;
            height: 391px;
            left: 0px;
            position: relative;
            right: 0px;
            text-size-adjust: 100%;
            top: 0px;
            width: 913.984px;
            perspective-origin: 456.984px 195.5px;
            transform-origin: 456.984px 195.5px;
            background: rgb(241, 241, 241) none repeat scroll 0% 0% / auto padding-box border-box;
            border: 2px dashed rgb(187, 187, 187);
            font: normal normal 400 normal 15px / 22.5px Lato, sans-serif;
            padding: 45px;
            transition: all 0.25s ease-in-out 0s;
        }

        /*#w3_DIV_1*/

        #w3_DIV_1:before {
            bottom: 349.047px;
            box-sizing: border-box;
            content: '"Margin"';
            display: block;
            height: 31px;
            left: 0px;
            position: absolute;
            right: 0px;
            text-align: center;
            text-size-adjust: 100%;
            top: 6.95312px;
            width: 909.984px;
            perspective-origin: 454.984px 15.5px;
            transform-origin: 454.984px 15.5px;
            font: normal normal 400 normal 21px / 31.5px Lato, sans-serif;
        }

        /*#w3_DIV_1:before*/

        #w3_DIV_2 {
            bottom: 0px;
            box-sizing: border-box;
            color: black;
            height: 297px;
            left: 0px;
            position: relative;
            right: 0px;
            text-decoration: none solid rgb(255, 255, 255);
            text-size-adjust: 100%;
            top: 0px;
            width: 819.984px;
            column-rule-color: rgb(255, 255, 255);
            perspective-origin: 409.984px 148.5px;
            transform-origin: 409.984px 148.5px;
            caret-color: rgb(255, 255, 255);
            background: rgb(76, 175, 80) none repeat scroll 0% 0% / auto padding-box border-box;
            border: 0px none rgb(255, 255, 255);
            font: normal normal 400 normal 15px / 22.5px Lato, sans-serif;
            outline: rgb(255, 255, 255) none 0px;
            padding: 45px;
        }

        /*#w3_DIV_2*/

        #w3_DIV_2:before {
            bottom: 258.578px;
            box-sizing: border-box;
            content: '"Border"';
            display: block;
            height: 31px;
            left: 0px;
            position: absolute;
            right: 0px;
            text-align: center;
            text-size-adjust: 100%;
            top: 7.42188px;
            width: 819.984px;
            perspective-origin: 409.984px 15.5px;
            transform-origin: 409.984px 15.5px;
            font: normal normal 400 normal 21px / 31.5px Lato, sans-serif;
        }

        /*#w3_DIV_2:before*/

        #w3_DIV_3 {
            bottom: 0px;
            box-sizing: border-box;
            height: 207px;
            left: 0px;
            position: relative;
            right: 0px;
            text-size-adjust: 100%;
            top: 0px;
            width: 729.984px;
            perspective-origin: 364.984px 103.5px;
            transform-origin: 364.984px 103.5px;
            background: rgb(241, 241, 241) none repeat scroll 0% 0% / auto padding-box border-box;
            font: normal normal 400 normal 15px / 22.5px Lato, sans-serif;
            padding: 45px;
        }

        /*#w3_DIV_3*/

        #w3_DIV_3:before {
            bottom: 168.344px;
            box-sizing: border-box;
            content: '"Padding"';
            display: block;
            height: 31px;
            left: 3.64062px;
            position: absolute;
            right: -3.64062px;
            text-align: center;
            text-size-adjust: 100%;
            top: 7.65625px;
            width: 729.984px;
            perspective-origin: 364.984px 15.5px;
            transform-origin: 364.984px 15.5px;
            font: normal normal 400 normal 21px / 31.5px Lato, sans-serif;
        }

        /*#w3_DIV_3:before*/

        #w3_DIV_4 {
            bottom: 0px;
            box-sizing: border-box;
            height: 117px;
            left: 0px;
            position: relative;
            right: 0px;
            text-size-adjust: 100%;
            top: 0px;
            width: 639.984px;
            perspective-origin: 319.984px 58.5px;
            transform-origin: 319.984px 58.5px;
            background: rgb(191, 201, 101) none repeat scroll 0% 0% / auto padding-box border-box;
            border: 2px dashed rgb(187, 187, 187);
            font: normal normal 400 normal 15px / 22.5px Lato, sans-serif;
            padding: 20px;
        }

        /*#w3_DIV_4*/

        #w3_DIV_4:before {
            box-sizing: border-box;
            content: '"Content"';
            display: block;
            height: 73px;
            text-align: center;
            text-size-adjust: 100%;
            width: 595.984px;
            perspective-origin: 297.984px 36.5px;
            transform-origin: 297.984px 36.5px;
            font: normal normal 400 normal 21px / 73.5px Lato, sans-serif;
        }

        /*#w3_DIV_4:before*/
   <h1> The Box model - content, padding, border, margin</h1>
    <h2> Inline element - span</h2>
    <span>Info: A span element can not have height and width (not without "display: block"), which means it takes the fixed inline size </span>

    <span class="beispielMargin">
        <b>Problem:</b> inline elements (eg span, a, button, input etc.) take "margin" only vertically (margin-left and margin-right)
        on, not horizontal. Vertical spacing works only on block elements (or if display: block is set) </span>

    <span class="beispielMarginDisplayInlineBlock">
        <b>Solution</b> Only through
        <b> "display: inline-block" </ b> will also take the vertical distance (top and bottom). Reason: Inline element Span,
        behaves now like a block element to the outside, but like an inline element inside</span>

    <span class="beispielMarginDisplayInline">Example: here "display: inline". See the margin with Inspector!</span>

    <span class="beispielMarginDisplayBlock">Example: here "display: block". See the margin with Inspector!</span>

    <span class="beispielMarginDisplayInlineBlock">Example: here "display: inline-block". See the margin with Inspector! </span>

    <span class="mitDisplayBlock">Only with the "Display" -property and "block" -Value in addition, a width and height can be assigned. "span" is then like
        a "div" block element.  </span>

    <h2>Inline-Element - Div</h2>
    <div> A div automatically takes "display: block." </ div>
    <div class = "paddingDiv"> Padding is for padding </ div>

    <div class="marginDivWrapper">
Wrapper encapsulates the example "marginDiv" to clarify the "margin" (distance from inner element "marginDiv" to the text)
        of the outer element "marginDivWrapper". Here 20px;)
        
    <div class = "marginDiv"> margin is for the margins </ div>
        And there, too, 20px;
    </div>

    <h2>w3school sample image </h2>
    source:
    <a href="https://www.w3schools.com/css/css_boxmodel.asp">CSS Box Model</a>
    <div id="w3_DIV_1">
        <div id="w3_DIV_2">
            <div id="w3_DIV_3">
                <div id="w3_DIV_4">
                </div>
            </div>
        </div>
    </div>


2

অন্যরা যেমন উত্তর দিয়েছে ... divএটি একটি "ব্লক উপাদান" (এখন ফ্লো সামগ্রী হিসাবে পুনরায় সংজ্ঞায়িত ) এবং spanএটি একটি "ইনলাইন উপাদান" ( ফ্রেসিং সামগ্রী )। হ্যাঁ, আপনি এই উপাদানগুলির ডিফল্ট উপস্থাপনা পরিবর্তন করতে পারেন, তবে "প্রবাহ" বনাম "ব্লক", এবং "ফ্রেসিং" বনাম "ইনলাইন" এর মধ্যে পার্থক্য রয়েছে।

প্রবাহ সামগ্রী হিসাবে শ্রেণীবদ্ধ একটি উপাদান কেবল সেখানে প্রবাহের সামগ্রী প্রত্যাশিত ব্যবহার করা যেতে পারে এবং ফ্রেসিং সামগ্রী হিসাবে শ্রেণিবদ্ধ একটি উপাদান ব্যবহার করা যেতে পারে যেখানে ফ্রেসিং বিষয়বস্তু প্রত্যাশিত। যেহেতু সব Phrasing কন্টেন্ট হয় প্রবাহিত বিষয়বস্তু, একটি বাচনভঙ্গীর উপরে নির্ভর উপাদান এছাড়াও যে কোন জায়গায় ব্যবহার করা যেতে পারে প্রবাহিত বিষয়বস্তু আশা করা হচ্ছে। চশমা আরও বিস্তারিত তথ্য সরবরাহ করে

যেমন সকল বাচনভঙ্গীর উপরে নির্ভর উপাদান, strongএবং emপারেন শুধুমাত্র অন্যান্য বাচনভঙ্গীর উপরে নির্ভর উপাদানগুলি থাকবে: আপনি যদি দূরে থাকতে পারে না tableএকটি ভিতরে citeউদাহরণস্বরূপ। সর্বাধিক যেমন বিষয়বস্তু প্রবাহিত divএবং liপ্রবাহ বিষয়বস্তুর প্রকারটি ধারণ করতে পারে (সেইসাথে বিষয়বস্তু phrasing যেমন), কিন্তু কয়েকটি ব্যতিক্রম রয়েছে: p, pre, এবং thঅ phrasing প্রবাহ বিষয়বস্তু উদাহরণ ( "ব্লক উপাদান") আছে করতে শুধুমাত্র বাচনভঙ্গীর উপরে নির্ভর ধারণ সামগ্রী ("ইনলাইন উপাদানসমূহ")। এবং অবশ্যই স্বাভাবিক উপাদানগুলির সীমাবদ্ধতা রয়েছে যেমন dlএবং tableকেবলমাত্র নির্দিষ্ট উপাদানগুলিকে ধারণ করার অনুমতি দেওয়া হয়।

উভয় divএবং pঅ-ফরাসী প্রবাহ সামগ্রী হিসাবে, divএতে অন্যান্য প্রবাহ সামগ্রীর শিশু (আরও divগুলি এবং pগুলি সহ ) থাকতে পারে । অন্যদিকে, pকেবলমাত্র ফ্রেসিং সামগ্রী অন্তর্ভুক্ত থাকতে পারে। এর অর্থ আপনি উভয় অন-ফরাসী প্রবাহ উপাদান থাকা সত্ত্বেও একটি এর divভিতরে রাখতে পারবেন না p

এখন এখানে লাথি। এই শব্দার্থবিজ্ঞানের বিশেষ উল্লেখগুলি কীভাবে উপাদানটি প্রদর্শিত হয় তার সাথে সম্পর্কিত নয়। সুতরাং, আপনার যদি একটি এর divঅভ্যন্তর spanথাকে তবে আপনি span {display: block;}এবং div {display: inline;}আপনার সিএসএসে থাকা সত্ত্বেও আপনি একটি বৈধতা ত্রুটি পাবেন ।


ইনলাইন-ব্লক ভিতরে ইনলাইন এবং ইনলাইন-ব্লকের ভিতরে ব্লক সম্পর্কে কী?
ব্যবহারকারী 764754

@ ইউজার 6464757575৪ যতক্ষণ আপনি চশমা মেনে চলবেন ততক্ষণ আপনি যে কোনও উপাদান আপনার ইচ্ছামতো স্টাইল করতে পারবেন এবং এটি এখনও কার্যকর হবে will ( inline-blockএকটি সিএসএস শৈলী, কোনও ধরণের উপাদান বা সামগ্রী সামগ্রী নয়))
ছারভে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.