<div> পূরণ <d>> উচ্চতা কীভাবে করবেন


103

আমি স্ট্যাকওভারফ্লোতে বেশ কয়েকটি পোস্ট দেখেছি, তবে এই বরং সহজ প্রশ্নের উত্তর খুঁজে পেতে সক্ষম হইনি।

আমার এই জাতীয় একটি HTML কনস্ট্রাক্ট রয়েছে:

<table>
  <tr>
    <td class="thatSetsABackground">
      <div class="thatSetsABackgroundWithAnIcon">
        <dl>
          <dt>yada
          </dt>
          <dd>yada
          </dd>
        </dl>
      <div>
    </td>
    <td class="thatSetsABackground">
      <div class="thatSetsABackgroundWithAnIcon">
        <dl>
          <dt>yada
          </dt>
          <dd>yada
          </dd>
        </dl>
      <div>
    </td>
  </tr>
</table>

আমার যা প্রয়োজন তা হ'ল divউচ্চতা পূরণ করার জন্য td, তাই আমি ডিভের পটভূমিটি (আইকন) এর নীচের অংশে ডানদিকের কোণে রাখতে সক্ষম হতে পারি td

আমি কীভাবে পরামর্শ দেব?


উত্তর:


186

যদি আপনি আপনার টিডিকে 1 পিএক্স উচ্চতা দেন, তবে শিশু ডিভের উচ্চমানের পিতামাতাকে এর থেকে% গণনা করতে হবে। আপনার বিষয়বস্তুগুলি 1px এর চেয়ে বড় হবে বলে টিডিটি স্বয়ংক্রিয়ভাবে বৃদ্ধি পাবে, ডিভ হিসাবে। কিন্ডা একটি আবর্জনা হ্যাক, কিন্তু আমি বাজি এটি কাজ করবে।


7
ওয়েবকিটটিতে এটি দুর্দান্ত কাজ করার মতো মনে হচ্ছে, আইই 9 সম্পূর্ণরূপে ভেঙে গেছে।
ড্যানিয়েল ইমস

আইই 11 এ আমার জন্য কেবল তখনই কাজ করুন যখন আমি ডিফল্টটিকেও ইনলাইন-ব্লকে সেট করি। ধন্যবাদ!
ড্যানি সি

6
ফায়ারফক্সেও কাজ করে এমন একটি সমাধান এখানে দেওয়া হয়েছে: stackoverflow.com/questions/36575846/…
ওয়াউটার

এটি ফায়ারফক্সে এবং ক্রোমে কাজ করার জন্য আমাকে এর min-height: 1px;পরিবর্তে ব্যবহার করতে হয়েছিলheight: 1px;
ম্যাট লিওনোইজিক

🤯 আমি নিশ্চিত কিনা আমি CSS এর মতো নই বা এটা ঘৃণা
noob

36

সিএসএস উচ্চতা: 100% কেবলমাত্র তখনই কাজ করে যদি উপাদানটির পিতামাতার একটি সুস্পষ্টভাবে সংজ্ঞায়িত উচ্চতা থাকে। উদাহরণস্বরূপ, এটি প্রত্যাশার মতো কাজ করবে:

td {
    height: 200px;
}

td div {
    /* div will now take up full 200px of parent's height */
    height: 100%;
}

যেহেতু দেখে মনে হচ্ছে আপনার <td>পরিবর্তনশীল উচ্চতা হতে চলেছে, আপনি যদি একেবারে ঠিক মতো চিত্রের সাথে নীচের ডান আইকনটি যুক্ত করেন তবে:

.thatSetsABackgroundWithAnIcon {
    /* Makes the <div> a coordinate map for the icon */
    position: relative;

    /* Takes the full height of its parent <td>.  For this to work, the <td>
       must have an explicit height set. */
    height: 100%;
}

.thatSetsABackgroundWithAnIcon .theIcon {        
    position: absolute;
    bottom: 0;
    right: 0;
}

টেবিল সেল মার্কআপের মতো:

<td class="thatSetsABackground">  
  <div class="thatSetsABackgroundWithAnIcon">    
    <dl>
      <dt>yada
      </dt>
      <dd>yada
      </dd>
    </dl>
    <img class="theIcon" src="foo-icon.png" alt="foo!"/>
  </div>
</td>

সম্পাদনা করুন: ডিভের উচ্চতা নির্ধারণ করতে jQuery ব্যবহার করে

আপনি যদি <div>সন্তানের সন্তান হিসাবে <td>রাখেন তবে jQuery এর এই স্নিপেটটি সঠিকভাবে এর উচ্চতা নির্ধারণ করবে:

// Loop through all the div.thatSetsABackgroundWithAnIcon on your page
$('div.thatSetsABackgroundWithAnIcon').each(function(){
    var $div = $(this);

    // Set the div's height to its parent td's height
    $div.height($div.closest('td').height());
});

এটা কাজ করতে পারে। আমি চেষ্টা করার পরে আপনার কাছে ফিরে আসি। আমি এই বিষয়টি পড়েছি এবং বুঝতে পেরেছি যে <ডিভি> 100% স্কেল করতে সক্ষম হওয়ার জন্য একটি নির্দিষ্ট উচ্চতা প্রয়োজন। আমি যা পড়েছি তা থেকে jQuery করা সম্ভব ছিল, কারণ এটি আমার পক্ষে এটি গণনা করতে পারে।

4
আমি সত্যিই এত ভাল কাজ করি নি, এবং আমরা বিভিন্ন পদ্ধতির বিষয়ে সিদ্ধান্ত নিয়েছি। তবে আমি আপনার উত্তরটি গ্রহণ করব কারণ এটি চারিদিক সেরা one

4
হ্যাঁ, সিএসএস আমাকে যে বার বার আমার দৃষ্টিভঙ্গি বদলেছে তার জন্য যদি কেবল আমার কাছে ডলার থাকে :)
প্যাট

5
আমি কি কেবল একজনই মনে করি যে "সিএসএস উচ্চতা: 100% কেবলমাত্র তখনই কাজ করে যদি উপাদানটির পিতামাতার একটি স্পষ্টভাবে সংজ্ঞায়িত উচ্চতা থাকে" সত্যিই বোবা নিয়ম? ব্রাউজারটি যাইহোক যাইহোক পিতামাতার উপাদানগুলির উচ্চতা নির্ধারণ করে; কোন উপায় আছে আপনি স্পষ্টভাবে পিতা বা মাতা উপাদান উচ্চতা সেট করতে থাকা উচিত।
জেজ


4

আপনি আপনার ডিভি ফ্লোট তৈরি করতে চেষ্টা করতে পারেন:

.thatSetsABackgroundWithAnIcon{

    float:left;
}

বিকল্পভাবে, ইনলাইন-ব্লক ব্যবহার করুন:

.thatSetsABackgroundWithAnIcon{

    display:inline-block;
}

ইনলাইন-ব্লক পদ্ধতির কার্যকারী উদাহরণ:

table,
th,
td {
  border: 1px solid black;
}
<table>
  <tr>
    <td>
      <div style="border:1px solid red; height:100%; display:inline-block;">
        I want cell to be the full height
      </div>
    </td>
    <td>
      This cell
      <br/>is higher
      <br/>than the
      <br/>first one
    </td>
  </tr>
</table>


ভাসা: বাম পরামর্শ কার্যকর বলে মনে হচ্ছে না। উল্লিখিত দ্বিতীয় সমাধানটি কার্যকর বলে মনে হচ্ছে, কারণ এই উত্তরটি এটিকে সরিয়ে দিয়ে উন্নত করা যেতে পারে।
ওয়াউটার

4
এটি ফায়ারফক্সের সাথে নেই। এটি কেবল ক্রোম দিয়ে কাজ করার জন্য মনে হয়।
YLombardi

8
সেই স্নিপেট ক্রোমিয়ামেও কাজ করে না, কমপক্ষে আজকাল (আমি 63.0.3239.84 ব্যবহার করছি) 84
মাইকেল

0

সত্যিই জেএস এর সাথে এটি করতে হবে। এখানে একটি সমাধান। আমি আপনার শ্রেণীর নামগুলি ব্যবহার করি নি, তবে আমি টিডি ক্লাসের মধ্যে "পূর্ণ-উচ্চতা" নামটির নামটি ডেকেছি :-) স্পষ্টতই, jQuery ব্যবহৃত হয়েছে। নোট করুন এটি jQuery (ডকুমেন্ট) থেকে ডেকে আনা হয়েছিল। প্রস্তুত (ফাংশন () {সেটফুলহাইটস ();}); এছাড়াও মনে রাখবেন আপনার যদি চিত্রগুলি থাকে তবে আপনাকে প্রথমে তাদের মাধ্যমে পুনরাবৃত্তি করতে হবে যেমন:

function loadedFullHeights(){
var imgCount = jQuery(".full-height").find("img").length;
if(imgCount===0){
    return setFullHeights();
}
var loaded = 0;
jQuery(".full-height").find("img").load(function(){
    loaded++;
    if(loaded ===imgCount){
        setFullHeights()
    }
});

}

এবং আপনি এর পরিবর্তে ডকরেডি থেকে লোডফুলহাইটস () কে কল করতে চান। এটি কেবলমাত্র আমি ক্ষেত্রে ব্যবহার করে শেষ করেছি। আপনি কি জানেন সামনে চিন্তা আছে!

function setFullHeights(){
var par;
var height;
var $ = jQuery;
var heights=[];
var i = 0;
$(".full-height").each(function(){
    par =$(this).parent();
    height = $(par).height();
    var tPad = Number($(par).css('padding-top').replace('px',''));
    var bPad = Number($(par).css('padding-bottom').replace('px',''));
    height -= tPad+bPad;
    heights[i]=height;
    i++;
});
for(ii in heights){
    $(".full-height").eq(ii).css('height', heights[ii]+'px');
}

}



-4

<td> নিজেই পটভূমি চিত্রটি পরিবর্তন করুন।

অথবা ডিভিতে কিছু সিএসএস প্রয়োগ করুন:

.thatSetsABackgroundWithAnIcon{
    height:100%;
}

আমি কোড লিখতে হিসাবে। টিডির একটি ক্লাস ব্যবহার করে ইতিমধ্যে একটি পটভূমি-চিত্র সেট রয়েছে। সুতরাং যে বিকল্পটি কার্যকর নয়। আমি ডিভের উচ্চতা 100% এ সেট করার চেষ্টা করেছি, তবে এটি কার্যকর হয় না। এটি কেবল থাকা <dl> এর পরিবর্তনশীল উচ্চতার সাথে মোড়ক দেয়। তাই ডিভটিকে "বোঝার" জন্য কিছু তৈরি করা দরকার যা এটির উচ্চতা পূরণ করা উচিত। এবং উচ্চতা: 100% এটি করে না। (একা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.