চিত্রের অধীনে পাঠ্য মোড়ানো বন্ধ করতে সিএসএস


87

আমার নিম্নলিখিত মার্কআপ রয়েছে:

<li id="CN2787">
  <img class="fav_star" src="images/fav.png">
  <span>Text, text and more text</span>
</li>

আমি এটি চাই যাতে পাঠ্য মোড়ানো হয় তবে এটি চিত্রটির জন্য 'কলামে' যায় না। আমি জানি আমি এটির table(যা আমি করছিলাম) দিয়ে এটি করতে পারি তবে এটি এই কারণে কার্যকর হয় না ।

আমি সাফল্য ছাড়াই নিম্নলিখিত চেষ্টা করেছি:

li span {width: 100px; margin-left: 20px}
.fav_star {width: 20px}

আমিও চেষ্টা করেছি float: right

ধন্যবাদ

সম্পাদনা: আমি এটি দেখতে এটি দেখতে চাই:

IMG   Text starts here and keeps going... and
      wrap starts here.

এটার মত না:

IMG   Text starts here and keeps going... and 
wrap starts in the space left for the image.

4
আপনি কি আপনার কোডটি জিসফিডেলে রাখতে পারবেন?
হার্ডিক

আমি মনে করি আপনার এখানে আপনার উদ্দেশ্য সম্পর্কে কিছুটা পরিষ্কার হওয়া দরকার। আপনি পাঠ্য তারপর মোড়ানো না চান তাহলে আপনি কেবল ব্যবহার করতে পারেন white-space: nowrap;মধ্যে li span {...}, কিন্তু আমি ছাপ যে আপনি কিছু অন্য করতে চেষ্টা পেতে
my head hurts

@ আমারহাইড হার্টস ক্ষমা চাইছেন - আমার কাছে স্পষ্ট মনে হয়েছিল :) আমি লাইনে দুটি কলাম চাই। বাম 20px একটি চিত্রের জন্য। বাকীটি পাঠ্যের জন্য। যদি পাঠ্যটি মোড়ানো হয়, আমি এটি বাম থেকে মোড়ক 20px এর দ্বিতীয় লাইনটি শুরু করতে চাই (যেখানে প্রাথমিক পাঠ্য শুরু হয়েছিল তার নিচে)।
নিক

4
পথচারীদের পক্ষে, গ্রহণযোগ্য উত্তর অনুসারে আপনাকে প্রস্থের সাথে ডিল করতে হবে না। এটি অনেক সহজ: একটি নতুন ফর্ম্যাটিং প্রসঙ্গে যাকে বলে তা তৈরি করুন । জো কনলিনের উত্তর দেখুন। আরও পটভূমি জন্য, আমার দেখুন।
hqcasanova

4
@ hqcasanova রেকর্ডটির জন্য, ড্যানের উত্তরটি আপনার পোস্টার জো তার পোস্ট করার 9 মাস আগে এবং 16 মাস আগে গ্রহণ করা হয়েছিল। আমি ড্যানের উত্তরটি গ্রহণ করব না, যদিও বিকল্প যুক্ত করার জন্য ধন্যবাদ।
নিক

উত্তর:


35

যেহেতু এই প্রশ্নটি প্রচুর মতামত লাভ করছে এবং এটিই স্বীকৃত উত্তর ছিল, তাই আমি নিম্নলিখিত দাবি অস্বীকার করার প্রয়োজন অনুভব করেছি:

এই উত্তরটি ওপির প্রশ্নের সাথে নির্দিষ্ট ছিল (উদাহরণগুলির মধ্যে প্রস্থটি সেট ছিল)) এটি কাজ করার সময় এটির প্রতিটি উপাদান, চিত্র এবং অনুচ্ছেদে একটি প্রস্থ থাকা প্রয়োজন। যদি না এটি আপনার প্রয়োজন হয় তবে আমি জো কনলিনের সমাধানটি ব্যবহার করার পরামর্শ দিচ্ছি যা এই প্রশ্নের অন্য উত্তর হিসাবে পোস্ট করা হয়েছে।

spanউপাদান একটি ইনলাইন উপাদান, আপনি সিএসএস এর প্রস্থ পরিবর্তন করতে পারবেন না হয়।

আপনি নীচে সিএসএস আপনার স্প্যানে যুক্ত করতে পারেন যাতে আপনি এর প্রস্থ পরিবর্তন করতে সক্ষম হবেন।

display: block;

অন্য উপায়, যা সাধারণত আরও বোধগম্য হয় তা হ'ল <p>আপনার সন্তানের জন্য পিতামাতা হিসাবে কোনও উপাদান ব্যবহার করা <span>

<li id="CN2787">
  <img class="fav_star" src="images/fav.png">
  <p>
     <span>Text, text and more text</span>
  </p>
</li>

যেহেতু <p>একটি blockউপাদান, আপনি কোনও পরিবর্তন না করেই সিএসএস ব্যবহার করে এর প্রস্থ নির্ধারণ করতে পারেন।

তবে উভয় ক্ষেত্রেই যেহেতু এখন আপনার একটি ব্লক উপাদান রয়েছে তাই আপনাকে চিত্রটি ভাসা করতে হবে যাতে আপনার পাঠ্যটি সমস্ত আপনার চিত্রের নীচে না যায়।

li p{width: 100px; margin-left: 20px}
.fav_star {width: 20px;float:left}

দ্রষ্টব্য পরিবর্তে float:leftছবিতে, এছাড়াও আপনি লাগাতে পারেন float:rightউপর li pকিন্তু সেই ক্ষেত্রে, আপনার কাছে করতে হবে text-align:leftসঠিকভাবে টেক্সট পুনর্নির্মাণ করা হয়।

পিএসএস যদি আপনি কোনও <p>উপাদান যুক্ত না করার প্রথম সমাধানটি নিয়ে এগিয়ে যান তবে আপনার সিএসএসের মতো দেখতে হবে:

li span{width: 100px; margin-left: 20px;display:block}
.fav_star {width: 20px;float:left}

এটি সত্যই সহায়ক। আমি spanএকটি pউপাদান পরিবর্তন । তারপর শুধু এই দুটি কৌতুক করতে করলো: li p {margin-left: 40px} .fav_star {float: left}। চিত্রটির প্রস্থ চিত্রটি নিজেই সেট করে দেয়, pউপাদানটি স্বয়ংক্রিয়ভাবে একটি হয় blockএবং আমি প্রস্থটি একা রেখে যাই। এর জন্য ধন্যবাদ.
নিক

4
আপনি যদি ব্যবহার display:blockকরতে যাচ্ছেন তবে আপনি divসম্ভবত এটির জন্য একটি ব্যবহার pকরতে পারেন (বা আপনার পরামর্শ অনুসারে এটি ব্যবহার করুন )। পাঠ্যটি দ্বিগুণ করার দরকার নেই - আপনি যদি এটি ব্যবহার করেন তবে আপনি pএটিটি হারাতে পারেন span
গ্যারেথ

আইএমও, আপনার পৃষ্ঠাগুলির নকশা পরিবর্তন করতে আপনার এইচটিএমএল ব্যবহার করা উচিত নয়। এটি সিএসএসের কাজ (অবশ্যই ব্যতিক্রম রয়েছে, বিশেষত যখন আপনার ক্রস ব্রাউজারের সামঞ্জস্যের প্রয়োজন হয়)। আমি বিশ্বাস করি যে যথাযথ এইচটিএমএল ব্যবহার করা এবং "ভাল শব্দার্থক" থাকা আরও গুরুত্বপূর্ণ is সুতরাং আমি একটি ব্যবহার করব না div, এই ক্ষেত্রে, একটি pআরও জ্ঞান করে। হারানোটি আমার কাছে spanঅত্যন্ত তুচ্ছ এবং আপনি কীভাবে আপনার বিষয়বস্তু রাখছেন তার উপর নির্ভর করে।
ড্যান

এ- <span>তে একটি মোড়ানো <p>হ্যাগওয়ার্টজ থেকে সরাসরি জাদুবিদ্যা! সুন্দর কাজ করে!
জানুস

252

এই সমস্যার জন্য খুব সহজ উত্তর যা মনে হয় প্রচুর লোককে ধরেছে:

<img src="url-to-image">
<p>Nullam id dolor id nibh ultricies vehicula ut id elit.</p>

    img {
        float: left;
    }
    p {
        overflow: hidden;
    }

উদাহরণ দেখুন: http://jsfiddle.net/vandigroup/upKGe/132/


11
এটি এই প্রশ্নের সঠিক উত্তর। এই কৌশলটির অনুচ্ছেদে একটি নির্দিষ্ট প্রস্থ সেট করার দরকার নেই। অনেক সহজ এবং সহজ সমাধান। এমনকি IE8 এ পুরোপুরি কাজ করে।
চকোলাটা

4
ঠিক আছে, আসলে পাঠ্যযুক্ত উপাদানটি যদি span(ওপির ক্ষেত্রে) হয় তবে এটি কাজ করবে না । একটি display: blockজন্য প্রয়োজন হবে span। তবে, এটি সংরক্ষণ করে, আমি সম্মত হলাম এটি অনেক বেশি মার্জিত সমাধান। যদি কেউ আশ্চর্য হয়ে যায় যে এর পিছনে যাদু কী overflow: hidden, তবে নীচে আমার উত্তরটি দেখুন।
hqcasanova

8
আমি যে আচরণটি প্রত্যাশা করব তা নয়, তবে এটি দুর্দান্ত।
গাভিন

4
রেকর্ডটির জন্য, এই উত্তরটি আমি টিক দিয়েছিলাম তার 8 মাস পরে এসেছিল :)
নিক

4
কি দারুন. নিখুঁতভাবে কাজ করেছেন। আমি বিশ্বাস করতে পারি না আমি এর আগে কখনও জানতাম না।
এসফ্ল্যাগ

25

যারা কিছু পটভূমি তথ্য চান তাদের জন্য এখানে কেন কাজ করে তা ব্যাখ্যা করার জন্য একটি ছোট্ট নিবন্ধoverflow: hidden । এটি তথাকথিত ব্লক ফর্ম্যাটিং প্রসঙ্গের সাথে করতে হবে । এটি ডাব্লু 3 সি এর অনুচ্ছেদের অংশ (অর্থাত্ হ্যাক নয়) এবং মূলত এই অঞ্চলটি ব্লক-ধরণের প্রবাহ সহ একটি উপাদান দ্বারা দখল করা।

প্রতিবার এটি প্রয়োগ করা হলে overflow: hiddenএকটি নতুন ব্লক বিন্যাসের প্রসঙ্গ তৈরি করে। তবে এই আচরণটি ট্রিগার করতে সক্ষম এমন একমাত্র সম্পত্তি নয়। সিডনি ওয়েব অ্যাপস গ্রুপ থেকে ফিওনা চ্যানের উপস্থাপনাটির উদ্ধৃতি :

  • ভাসা: বাম / ডান
  • ওভারফ্লো: লুকানো / অটো / স্ক্রোল
  • প্রদর্শন: সারণী-ঘর এবং কোনও টেবিল-সম্পর্কিত মান / ইনলাইন-ব্লক
  • অবস্থান: পরম / স্থির

4
লিঙ্কটি মারা যাওয়ার ক্ষেত্রে আপনি কি এই উত্তর থেকে আপনার উত্তরটিতে কিছু বিশদ যুক্ত করতে পারেন?

গুড মর্নিং অস্ট্রেলিয়া! মন্তব্যের জন্য ধন্যবাদ.
hqcasanova

কোড ব্লকগুলি প্রদর্শনের জন্য এটি দুর্দান্ত যা আপনার নিকটস্থ চিত্রগুলি বা ভাসমান সাইডবারগুলির সাথে লড়াই করতে পারে।
আলেকজমা

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

3

আপনি যদি চান margin-leftএকটি কাজ করার spanউপাদান আপনি এটি করতে করতে হবে display: inline-blockবা display:blockহিসাবে ভাল।


সম্ভবত এটির vertical-align: top;সাথে ইমেজেরও প্রয়োজন ।
থিংকিং

2

পাঠ্যটির display:flexজন্য সেটিংস আমার পক্ষে কাজ করেছিল।


এটি সেটিংসের আরও আধুনিক সমতুল্য বলে মনে হচ্ছে overflow:auto। আমি নিশ্চিত যে এটি সব পরিস্থিতিতে ঠিক একই রকম কাজ করে না, তবে এটি আমার পক্ষেও কাজ করে।
ম্যাট ব্রাউন

1

চিত্র এবং স্প্যানের চারপাশে একটি ডিভ মোড়ুন এবং সিএসএসে নিম্নলিখিতটি যুক্ত করুন:

এইচটিএমএল

        <li id="CN2787">
          <div><img class="fav_star" src="images/fav.png"></div>
          <div><span>Text, text and more text</span></div>
        </li>

সিএসএস

            #CN2787 > div { 
                display: inline-block;
                vertical-align: top;
            }

            #CN2787 > div:first-of-type {
                width: 35%;
            }

            #CN2787 > div:last-of-type {
                width: 65%;
            }

কম

        #CN2787 {
            > div { 
                display: inline-block;
                vertical-align: top;
            }

            > div:first-of-type {
                width: 35%;
            }
            > div:last-of-type {
                width: 65%;
            }
        }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.