මට භාවිතා කළ හැකි 'ක්ලියර්ෆික්ස්' ක්‍රම මොනවාද?


868

divතීරු දෙකක පිරිසැලසුමක් එතීමේ වයස්ගත ගැටළුව මට තිබේ . මගේ පැති තීරුව පාවී ඇති බැවින් divඅන්තර්ගතය සහ පැති තීරුව එතීමට මගේ බහාලුම අසමත් වේ.

<div id="container">
  <div id="content"></div>
  <div id="sidebar"></div>
</div>

ෆයර්ෆොක්ස් හි පැහැදිලි දෝෂය නිවැරදි කිරීමේ ක්‍රම රාශියක් ඇති බව පෙනේ:

  • <br clear="all"/>
  • overflow:auto
  • overflow:hidden

මගේ තත්වය තුළ, නිවැරදිව ක්‍රියා කරන බව පෙනෙන එකම <br clear="all"/>විසඳුම වන්නේ එය ටිකක් අපිරිසිදු ය. overflow:autoමට නරක අනුචලන තීරු ලබා දෙන අතර overflow:hiddenනිසැකවම අතුරු ආබාධ ඇති විය යුතුය. එසේම, IE7 එහි වැරදි හැසිරීම නිසා මෙම ගැටලුවෙන් පීඩා විඳින්නේ නැත, නමුත් මගේ තත්වය තුළ එය ෆයර්ෆොක්ස් වලට සමාන වේ.

වඩාත්ම ශක්තිමත් වන්නේ දැනට අපට ලබා ගත හැකි ක්‍රමය කුමක්ද?


1
මම jqui.net/tips-tricks/css-clearfix භාවිතා කරන්නේ එය තිත සැඟවීමට උපකාරී වේ :)
Val

1
IE 6 සහ IE 7 ගැන කුමක් කිව හැකිද? ඔවුන් කිසි විටෙකත් දේවල් නිරවුල් කිරීමේ නිවැරදි මාර්ගය අනුගමනය නොකරයි.
ප්‍රවීන් කුමාර් පුරුෂෝතමන්

දැන් අපි වසරක් ගත වී ඇත්තෙමු , බෝර්බන් සහ ඉනූට් සීඑස් යන විශාල නාම රාමු වල භාවිතා කර ඇති පරිදි මෙහි දක්වා ඇති නවීන පේළි තුනේ පැහැදිලි කිරීම් සඳහා නිවැරදි පිළිතුර සංශෝධනය කිරීමට අවස්ථාවක් තිබේද? බලන්න මගේ පිළිතුර පහත .
iono

Answers:


1045

නිපදවන සැලසුම මත පදනම්ව, පහත දැක්වෙන එක් එක් පැහැදිලි විසඳුම් CSS විසඳුම් වලට තමන්ගේම වාසි ඇත.

Clearfix හි ප්‍රයෝජනවත් යෙදුම් ඇති නමුත් එය අනවසරයෙන් භාවිතා කර ඇත. ඔබ පැහැදිලි විසඳුමක් භාවිතා කිරීමට පෙර මෙම නවීන CSS විසඳුම් ප්‍රයෝජනවත් විය හැකිය:


නවීන ක්ලියර්ෆික්ස් විසඳුම්


සමඟ බහාලුම් overflow: auto;

පාවෙන මූලද්රව්ය ඉවත් කිරීමට සරලම ක්රමය වන්නේ overflow: autoඅඩංගු මූලද්රව්යයේ ශෛලිය භාවිතා කිරීමයි . මෙම විසඳුම සෑම නවීන බ්‍රව්සරයකම ක්‍රියාත්මක වේ.

<div style="overflow: auto;">
  <img
    style="float: right;"
    src="path/to/floated-element.png"
    width="500"
    height="500"
  > 
  <p>Your content here…</p>
</div>

එක් අවාසියක් නම්, බාහිර මූලද්‍රව්‍යය මත යම් ආන්තික හා පෑඩින් සංයෝජන භාවිතා කිරීමෙන් අනුචලන තීරු පෙනෙන්නට පුළුවන, නමුත් ආන්තිකය සහ පෑඩින් වෙනත් මවුපියන් අඩංගු මූලද්‍රව්‍යයක් මත තැබීමෙන් මෙය විසඳිය හැකිය.

'පිටාර ගැලීම: සැඟවුණු' භාවිතා කිරීම ද පැහැදිලි විසඳුමක් වන නමුත් අනුචලන තීරු නොතිබෙනු ඇත, කෙසේ වෙතත් භාවිතා කිරීමෙන් hiddenඅඩංගු මූලද්‍රව්‍යයෙන් පිටත ස්ථානගත කර ඇති ඕනෑම අන්තර්ගතයක් කපනු ලැබේ .

සටහන: පාවෙන මූලද්‍රව්‍යය imgමෙම උදාහරණයේ ටැගයකි, නමුත් ඕනෑම html මූලද්‍රව්‍යයක් විය හැකිය.


Clearfix Reloaded

CSSMojo හි තියරි කොබ්ලෙන්ට්ස් මෙසේ ලිවීය: නවතම පැහැදිලි කිරීම නැවත පූරණය විය . පැරණි අයිඊ සඳහා සහය දැක්වීමෙන් විසඳුම එක් සීඑස්එස් ප්‍රකාශයකට සරල කළ හැකි බව ඔහු සඳහන් කළේය. මීට අමතරව, පැහැදිලි display: blockවෙනුවට ඇති display: tableමූලද්‍රව්‍ය සහෝදර සහෝදරියන් වන විට (වෙනුවට ) භාවිතා කිරීම ආන්තිකයන් නිසි ලෙස බිඳ වැටීමට ඉඩ දෙයි.

.container::after {
  content: "";
  display: block;
  clear: both;
}

ක්ලියර්ෆික්ස් හි වඩාත්ම නවීන අනුවාදය මෙයයි.


පැරණි ක්ලියර්ෆික්ස් විසඳුම්

නවීන බ්‍රව්සර් සඳහා පහත විසඳුම් අවශ්‍ය නොවන නමුත් පැරණි බ්‍රව්සර් ඉලක්ක කිරීම සඳහා ප්‍රයෝජනවත් විය හැකිය.

මෙම විසඳුම් බ්‍රව්සර් දෝෂ මත රඳා පවතින අතර එබැවින් භාවිතා කළ යුත්තේ ඉහත විසඳුම් කිසිවක් ඔබ වෙනුවෙන් ක්‍රියා නොකරන්නේ නම් පමණි.

ඒවා දළ වශයෙන් කාලානුක්‍රමික පිළිවෙලට ලැයිස්තුගත කර ඇත.


නවීන බ්‍රව්සර් සඳහා පැහැදිලි විසඳුමක් වන “බීට් ද ක්ලියර්ෆික්ස්”

ක තියරි Koblentz ' CSS Mojo නවීන බ්රවුසරයන් ඉලක්ක විට, අප දැන් අතහැර හැකි බව පෙන්වා දී ඇත zoomහා ::beforeදේපල / වටිනාකම් හා සරලව භාවිතා කරන්න:

.container::after {
    content: "";
    display: table;
    clear: both;
}

මෙම විසඳුම IE 6/7 සඳහා සහය නොදක්වයි… අරමුණක් ඇතුව!

තියරි ද මෙසේ කියයි: " පරෙස්සම් සහගත වචනයක් : ඔබ මුල සිටම නව ව්‍යාපෘතියක් ආරම්භ කරන්නේ නම්, ඒ සඳහා යන්න, නමුත් දැන් ඔබ සතුව ඇති තාක්‍ෂණය සමඟ මෙම තාක්‍ෂණය මාරු නොකරන්න, මන්ද ඔබ පැරණි අයිඊයට සහාය නොදක්වුවද, ඔබගේ පවතින නීති වලක්වනු ඇත බිඳ වැටෙන ආන්තිකයන්. ”


මයික්‍රෝ ක්ලියර්ෆික්ස්

නිකොලස් ගැලගර් විසින් රචිත මයික්‍රෝ ක්ලියර්ෆික්ස් හි නවතම හා ගෝලීය වශයෙන් පිළිගත් ක්ලියර්ෆික්ස් විසඳුම .

දන්නා සහාය: ෆයර්ෆොක්ස් 3.5+, සෆාරි 4+, ක්‍රෝම්, ඔපෙරා 9+, අයිඊ 6+

.container::before, .container::after {
  content: "";
  display: table;
}
.container::after {
  clear: both;
}
.container {
  zoom: 1;
}

පිටාර ගැලීමේ දේපල

ස්ථානගත කර ඇති අන්තර්ගතය බහාලුම් සීමාවෙන් පිටත නොපෙන්වන විට සුපුරුදු අවස්ථාව සඳහා මෙම මූලික ක්‍රමය වඩාත් සුදුසු වේ.

http://www.quirksmode.org/css/clearing.html - මෙම තාක්ෂණයට අදාළ පොදු ගැටළු නිරාකරණය කරන්නේ කෙසේද යන්න පැහැදිලි කරයි, එනම් width: 100%කන්ටේනරය සැකසීම .

.container {
  overflow: hidden;
  display: inline-block;
  display: block;
}

displayIE සඳහා "hasLayout" සැකසීමට දේපල භාවිතා කරනවා වෙනුවට , මූලද්‍රව්‍යයක් සඳහා "hasLayout" අවුලුවාලීමට වෙනත් ගුණාංග භාවිතා කළ හැකිය .

.container {
  overflow: hidden;
  zoom: 1;
  display: block;
}

overflowදේපල භාවිතා කරමින් පාවෙන දේ ඉවත් කිරීමට තවත් ක්‍රමයක් වන්නේ අවධාරනය කරන ලද හැක් භාවිතා කිරීමයි . IE විසින් යටි ඉරි සහිත උපසර්ගයන් යොදනු ඇත, අනෙක් බ්‍රව්සර් එසේ නොවේ. මෙම zoomදේපල මූලික හේතුව hasLayout IE දී:

.container {
  overflow: hidden;
  _overflow: visible; /* for IE */
  _zoom: 1; /* for IE */
}

මෙය ක්‍රියාත්මක වන අතර ... හක්ක භාවිතා කිරීම සුදුසු නොවේ.


PIE: පහසු නිශ්කාෂණ ක්‍රමය

මෙම පැරණි "ඊසි ක්ලියරින්" ක්‍රමයට වඩා උපායශීලී CSS හි වියදමින් ස්ථානගත කර ඇති මූලද්‍රව්‍ය බහාලුම් සීමාවෙන් පිටත එල්ලීමට ඉඩ දීමේ වාසිය ඇත.

මෙම විසඳුම තරමක් පැරණි ය, නමුත් සෑම දෙයක්ම පහසුවෙන් ඉවත් කිරීම පිළිබඳ සියල්ල ඉගෙන ගත හැකිය: http://www.positioniseverything.net/easyclearing.html


"පැහැදිලි" දේපල භාවිතා කරන මූලද්රව්යය

ඔබ ඉක්මණින් යමක් කම්මුලට ගසන විට ඉක්මන් හා අපිරිසිදු විසඳුම (සමහර අඩුපාඩු සහිතව):

<br style="clear: both" /> <!-- So dirty! -->

අඩුපාඩු

  • එය ප්‍රතිචාර නොදක්වන අතර මාධ්‍ය විමසුම් මත පදනම්ව පිරිසැලසුම් මෝස්තර වෙනස් වුවහොත් අපේක්ෂිත ප්‍රති provide ල ලබා නොදේ. පිරිසිදු CSS හි විසඳුමක් වඩාත් සුදුසු ය.
  • එය කිසිදු අර්ථකථන අගයක් එකතු නොකර html සලකුණු එකතු කරයි.
  • සීඑස්එස් හි “ක්ලියර්ෆික්ස්” හි තනි විසඳුමක් සඳහා පන්ති යොමු කිරීමකට වඩා එක් එක් අවස්ථාව සඳහා පේළිගත අර්ථ දැක්වීමක් සහ විසඳුමක් අවශ්‍ය වේ.
  • එය අනෙක් අයට වැඩ කිරීමට කේතය දුෂ්කර කරයි, මන්ද එය වටා වැඩ කිරීමට තවත් හක්ක ලිවීමට සිදුවනු ඇත.
  • අනාගතයේදී ඔබට වෙනත් පැහැදිලි විසඳුමක් භාවිතා කිරීමට අවශ්‍ය වූ විට / අවශ්‍ය වූ විට, ඔබට ආපසු ගොස් <br style="clear: both" />සලකුණු කිරීම වටා ඇති සෑම ටැගයක්ම ඉවත් කිරීමට සිදු නොවේ .

25
Av ඩේවිඩ් ගංගා: බ්රවුසරයේ විග්‍රහ කිරීමේ දෝෂයක් උපයෝගී කර නොගන්නා බැවින් එය කඩුල්ලක් නොවේ, එය විසඳුමක් ලෙස css හි අංගයක් භාවිතා කරයි. මීට අමතරව: අවධාරනය කළ හැක් මෙන් නොව අනාගත බ්‍රව්සර්වල පසු සහාය ලැබේ. මූලද්‍රව්‍යයකට යෙදිය හැකි CSS ගුණාංගයක් ඉතා මැනවින් එහි අන්තර්ගතය අඩංගු වේ.
බියු ස්මිත්

7
බිඳවැටීමට ස්තූතියි. CSS3 කොටු සෙවනැලි හෝ ස්ථානගත කර ඇති මූලද්‍රව්‍යයන් කපා නොගන්නා බැවින්, "පිටාර ගැලීම: සැඟවුණු" වලට වඩා "පහසු නිශ්කාෂණ" ක්‍රමයෙන් පසුව මට පෙනේ. කේතයේ අමතර රේඛා අනිවාර්යයෙන්ම වටී.
ඇනියන්

7
මම පැහැදිලිව පෙනී නොසිටිමි: දෙකම විසඳුම, නමුත් ඔබේ 'අපිරිසිදු' ලේබල් කිරීම සමඟ මම එකඟ නොවෙමි. CSS හි පේළි කිහිපයකට සාපේක්ෂව (ඔබේ බ්‍රව්සරයද පැටවිය යුතු) HTML කේතයේ කෙටි රේඛා 1 ක් වන බැවින් 'බර එකතු කිරීම / බර අඩු කිරීම' තර්කය මෝඩ බවක් පෙනේ. 'අර්ථකථන අගය' තර්කය සඳහා, පැහැදිලි බ්‍රව් එකක්: දෙකම තේරුම් ගැනීමට පහසු වන්නේ මෝඩ වෙඩි තැබීමේ සංචිතයක් සොයා ගැනීමට උත්සාහ කරනවාට වඩා ය. පැහැදිලි: දෙකම කෙටි හා සරල වන අතර ඉමෝට 'වෘත්තීයභාවය' කෙරෙහි කිසිදු බලපෑමක් නැත.
විග්‍රොන්ඩ්

16
ජනප්‍රිය විශ්වාසයන්ට පටහැනිව, overflow: hiddenහෝ overflow: autoපාවෙන දේ ඉවත් නොකරයි (එය “ක්ලියර්ෆික්ස්” ලෙස වර්ගීකරණය කිරීම වැරදි නාමයකි); ඒ වෙනුවට එය මූලද්‍රව්‍යයක් මගින් නව ආකෘතිකරණ සන්දර්භයක් නිර්මාණය කිරීමට හේතු වන අතර එමඟින් පාවෙන අන්තර්ගත විය හැකිය. මෙමඟින් කන්ටේනරය පාවෙන ඒවායේ උස දක්වා විහිදේ. ඒ සඳහා කිසිදු නිෂ්කාශනයක් නොමැත - එසේ පැවසුවහොත්, ඔබේ පිරිසැලසුම අනුව කන්ටේනරය තුළ ඇති පාවෙන දේ ඉවත් කිරීමට හෝ පැහැදිලි කිරීමට ඔබට තවමත් තෝරා ගත හැකිය.
බෝල්ට් ක්ලොක්

3
අපි තවදුරටත් IE7 සඳහා සහාය නොදිය යුතුය. කරුණාකර මෙහි විස්තර කර ඇති පේළි තුනේ ක්‍රමය සමඟ යාවත්කාලීන කරන්න
iono

71

අප විසඳීමට උත්සාහ කරන ගැටළු මොනවාද?

පාවෙන දේවල් කිරීමේදී වැදගත් කරුණු දෙකක් තිබේ:

  1. පැවත එන පාවෙන. මෙයින් අදහස් කරන්නේ ප්‍රශ්නයේ ඇති මූලද්‍රව්‍යය සියලු පාවෙන පරම්පරාවන් ඔතා ගැනීමට තරම් උස වන බවයි. (ඔවුන් පිටත එල්ලන්නේ නැත.)

    පාවෙන අන්තර්ගතය එහි බහාලුමෙන් පිටත එල්ලී තිබේ

  2. පිටත පාවෙන පරම්පරාවන් පරිවරණය කිරීම. මෙයින් අදහස් කරන්නේ මූලද්‍රව්‍යයක ඇතුළත පැවතෙන්නන්ට භාවිතා කිරීමට හැකි විය යුතු clear: bothඅතර එය මූලද්‍රව්‍යයෙන් පිටත පාවෙන සමඟ අන්තර්ක්‍රියා නොකළ යුතුය .

    <code> පැහැදිලි: දෙකම </ code> DOM හි වෙනත් තැනක පාවෙන සමඟ අන්තර්ක්‍රියා කරයි

ආකෘතිකරණ සන්දර්භය අවහිර කරන්න

මේ දෙකම කිරීමට ඇත්තේ එක් මාර්ගයක් පමණි. එය නව වාරණ ආකෘතිකරණ සන්දර්භයක් ස්ථාපිත කිරීමයි . බ්ලොක් හැඩතල ගැන්වීමේ සන්දර්භයක් ඇති කරන මූලද්‍රව්‍ය යනු පරිවරණය කරන ලද සෘජුකෝණාස්රයකි. බ්ලොක් හැඩතල ගැන්වීමේ සන්දර්භයක් සෑම විටම එහි පාවෙන පරම්පරාව දෘශ්‍යමය වශයෙන් ඔතා තැබීමට තරම් උස වන අතර, බ්ලොක් ආකෘතිකරණ සන්දර්භයෙන් පිටත කිසිදු පාවීමක් ඇතුළත මූලද්‍රව්‍ය සමඟ අන්තර්ක්‍රියා කළ නොහැක. මෙම ද්වි-මාර්ග පරිවරණය ඔබට අවශ්‍ය දේම වේ. IE හි, මෙම සංකල්පයම hasLayout ලෙස හැඳින්වේ , එය හරහා සැකසිය හැකිය zoom: 1.

වාරණ සන්දර්භය හැඩතල ස්ථාපිත කිරීමට ක්රම කිහිපයක් ඇත, නමුත් මම නිර්දේශ විසඳුම display: inline-blockසමග width: 100%. (ඇත්තෙන්ම, පවතින සාමාන්ය caveats භාවිතා සමග width: 100%එසේ භාවිතය, box-sizing: border-boxහෝ Put padding, marginසහ borderවෙනස් අංගයක් මත.)

වඩාත්ම ශක්තිමත් විසඳුම

පාවෙන වඩාත් සුලභ යෙදුම වන්නේ තීරු දෙකේ පිරිසැලසුමයි. (තීරු තුනකට දිගු කළ හැකිය.)

පළමුව සලකුණු ව්‍යුහය.

<div class="container">
  <div class="sidebar">
    sidebar<br/>sidebar<br/>sidebar
  </div>
  <div class="main">
    <div class="main-content">
      main content
      <span style="clear: both">
        main content that uses <code>clear: both</code>
      </span>
    </div>
  </div>
</div>

දැන් CSS.

/* Should contain all floated and non-floated content, so it needs to
 * establish a new block formatting context without using overflow: hidden.
 */
.container {
  display: inline-block;
  width: 100%;
  zoom: 1; /* new block formatting context via hasLayout for IE 6/7 */
}

/* Fixed-width floated sidebar. */
.sidebar {
  float: left;
  width: 160px;
}

/* Needs to make space for the sidebar. */
.main {
  margin-left: 160px;
}

/* Establishes a new block formatting context to insulate descendants from
 * the floating sidebar. */
.main-content {
  display: inline-block;
  width: 100%;
  zoom: 1; /* new block formatting context via hasLayout for IE 6/7 */
}

එය ඔබම උත්සාහ කරන්න

කේතය සමඟ සෙල්ලම් කිරීමට ජේඑස් බින් වෙත ගොස් මෙම විසඳුම බිම සිට ඉහළට ගොඩනගන්නේ කෙසේදැයි බලන්න.

හානිකර යැයි සැලකෙන සාම්ප්‍රදායික පැහැදිලි කිරීමේ ක්‍රම

සාම්ප්‍රදායික ක්ලියර්ෆික්ස් විසඳුම්වල ඇති ගැටළුව නම්, ඔවුන් IE සහ අනෙක් සියල්ලන් සඳහා එකම ඉලක්කය සපුරා ගැනීම සඳහා වෙනස් විදැහුම්කරණ සංකල්ප දෙකක් භාවිතා කිරීමයි. IE හි ඔවුන් නව බ්ලොක් හැඩතල ගැන්වීමේ සන්දර්භයක් ස්ථාපිත කිරීම සඳහා hasLayout භාවිතා කරයි, නමුත් අනෙක් සියල්ලන්ටම ඔවුන් විසින් ජනනය කරන ලද පෙට්ටි ( :after) සමඟ භාවිතා කරයි clear: both, එමඟින් නව වාරණ ආකෘතිකරණ සන්දර්භයක් ස්ථාපිත නොවේ. මෙයින් අදහස් කරන්නේ සෑම තත්වයකදීම දේවල් එක හා සමාන නොවන බවයි. මෙය නරක ඇයි යන්න පැහැදිලි කිරීම සඳහා, ක්ලියර්ෆික්ස් ගැන ඔබ දන්නා සියල්ල වැරදිය .


“භාවිතා කිරීම සමඟ සුපුරුදු අවවාද width: 100%” මොනවාද? එසේම, zoom: 1§2 හි ¶1 හි භාවිතා කිරීමට ඔබ යෝජනා කරනවාද?
බෝමර්

සිත්ගන්නාසුලු පිළිතුර, නමුත් කුමක් ගැනද overflow: hidden? එය වෙනස් වන්නේ hasLayoutකෙසේද?
බෝමර්

ඇත්ත, නමුත් යමෙකු භාවිතා කිරීමෙන් වැළකී සිටියහොත් position: absoluteඑය හොඳයි, එම විදැහුම්කරණ සංකල්පයේම කොටසක් වේවිද?
බෝමර්

මට පේනවා. සංකල්පය විදැහුම් කිරීමෙන් මා අදහස් කළේ overflow: hiddenඑවැනි දෙයක් ක්‍රියාත්මක වන්නේ නම්, පිරිසැලසුමෙහි ඇති දේට වඩා වෙනස්ද?
බෝමර්

2
Stackoverflow.com/questions/1794350/what-is-haslayouthasLayout හි වැඩිදුර කියවන්න . නව බ්ලොක් හැඩතල ගැන්වීමේ සන්දර්භයක් ස්ථාපිත කිරීම හා සමාන යැයි මම සිතමි. මෙය සිදු කරන මූලද්‍රව්‍යයන් ඒවායේ පැවත එන සියලුම මූලද්‍රව්‍යයන්ගේ පිරිසැලසුම සඳහා අත්‍යවශ්‍යයෙන්ම වගකිව යුතුය. මෙහි එක් ප්‍රති result ලයක් වනුයේ නව බ්ලොක් හැඩතල ගැන්වීමේ සන්දර්භයක් ස්ථාපිත කරන මූලද්‍රව්‍යවල පාවෙන පරම්පරාවන් අඩංගු වන අතර මූලද්‍රව්‍යයෙන් පිටත පාවෙන ඇතුළත මූලද්‍රව්‍ය සමඟ අන්තර්ක්‍රියා නොකිරීමයි . (මෙය ඉහත පිළිතුරේ ඇත.)clear: left|right|both
ක්‍රිස් කැලෝ

55

Inuit.css සහ Bourbon විසින් භාවිතා කරන ලද නව ප්‍රමිතිය - ඉතා පුළුල් ලෙස භාවිතා කරන ලද සහ හොඳින් නඩත්තු කරන ලද CSS / Sass රාමු දෙකක්:

.btcf:after {
    content:"";
    display:block;
    clear:both;
}

සටහන්

පැහැදිලිව සකස් කිරීම අත්‍යවශ්‍යයෙන්ම නම්‍යශීලි පෙට්ටියේ පිරිසැලසුමට වඩා හොඳ ආකාරයකින් සැපයිය හැකි දේ බව මතක තබා ගන්න . සීඑස්එස් පාවෙන මුලින් නිර්මාණය කර ඇත්තේ පේළිගත අන්තර්ගතයන් වටා ගලා යාම සඳහාය - දිගු පා article ලිපියක පින්තූර වැනි - ග්‍රිඩ් පිරිසැලසුම් සහ වෙනත් දේ සඳහා නොවේ. ඔබේ ඉලක්ක බ්‍රව්සර් නම්යශීලී කොටුවට සහය දක්වන්නේ නම් එය සොයා බැලීම වටී.

මෙය IE7 සඳහා සහය නොදක්වයි. ඔබ IE7 සඳහා සහාය නොවිය යුතුය. එසේ කිරීමෙන් පරිශීලකයින් නොනවතින ආරක්ෂක සූරාකෑමට නිරාවරණය වන අතර අනෙකුත් සියලුම වෙබ් සංවර්ධකයින්ගේ ජීවිතය දුෂ්කර කරයි, මන්ද එය නවීන බ්‍රව්සර් වෙත මාරුවීමට පරිශීලකයින්ට සහ සංවිධානවලට ඇති පීඩනය අඩු කරයි.

මෙම පැහැදිලි කිරීම 2012 ජූලි මාසයේදී තියරි කොබ්ලෙන්ට්ස් විසින් ප්‍රකාශයට පත් කරන ලදී. එය නිකොලස් ගැලගර්ගේ 2011 මයික්‍රෝ ක්ලියර්ෆික්ස් වෙතින් අනවශ්‍ය බරක් දරයි . ක්‍රියාවලියේදී, එය ඔබගේ භාවිතය සඳහා ව්‍යාජ මූලද්‍රව්‍යයක් නිදහස් කරයි. මෙය යාවත්කාලීන කිරීම display: blockවෙනුවට යාවත්කාලීන කර ඇත display: table(නැවතත්, තියරි කොබ්ලන්ට්ස් වෙත ණය).


3
මම ඔබ සමඟ සම්පුර්ණයෙන්ම එකඟ වන බැවින් ඔබේ පිළිතුරට මේ සඳහා වැඩි ඡන්ද ප්‍රමාණයක් ලැබෙනු ඇතැයි මම බලාපොරොත්තු වෙමි. නැවතත්, එය 2013 වන අතර මිනිසුන් භාවිතා කළ යුතු විසඳුම මෙය බව මම සැබවින්ම විශ්වාස කරමි.
rafaelbiten

2
එකඟ විය. theie7countdown.com ඔබේම විශ්ලේෂණ පරීක්ෂා කර බලා IE7 ඔබේ කාලය වටින්නේ නැති බව බලාපොරොත්තු වන්න.
ජස්ටින්

1
Ust ජස්ටින් එකඟ විය; ඔබේ පුද්ගලික විශ්ලේෂණ මඟින් මෙය අනාවරණය වේ. කවුන්ට් ඩවුන් අඩවිය ටික කලකින් යාවත්කාලීන වී ඇතැයි මම නොසිතමි - ගෝලීය වශයෙන් IE7 0.39% ක් වන කැනියුස් සංඛ්‍යාලේඛන භාවිතා කිරීම වඩාත් සුදුසුය .
iono

1
පිරිසැලසුම සඳහා පාවෙන ඒවාට වඩා නම්‍යශීලි පෙට්ටියක් භාවිතා කිරීම මගින් ක්ලියර්ෆික්ස් වැනි හක්ක ඉක්මනින් අනවශ්‍ය වනු ඇතැයි අපේක්‍ෂා කරමු.
iono

ඔබට අවශ්‍ය තරම් IE7 සඳහා සහය දැක්වීමට ඔබට විරුද්ධ විය හැකිය, නමුත් මෙම පරිශීලකයින්ට (විවිධ හේතූන් මත - සාමාන්‍යයෙන් මුදල්) සහාය දැක්වීම සඳහා ව්‍යාපාර අන්තයේ සිට අවශ්‍යතාවයක් තිබේ නම්, ගැටලුව සම්බන්ධයෙන් ඔබට හැඟෙන ආකාරය නොසලකා ඔබ එය කිරීමට යන්නේ
ක්‍රිස් සෙල්බෙක්

28

Http://html5boilerplate.com/ වෙතින් ලබාගත් පහත සඳහන් දෑ භාවිතා කිරීමට මම නිර්දේශ කරමි.

/* >> The Magnificent CLEARFIX << */
.clearfix:after { 
  content: "."; 
  display: block; 
  height: 0; 
  clear: both; 
  visibility: hidden; 
}
.clearfix { 
  display: inline-block;  
}
* html .clearfix {  
  height: 1%;  
} /* Hides from IE-mac \*/
.clearfix {  
  display: block;  
}

8
IE-mac දැන් මතක තබා ගන්නේ කවුද? වඩා අදාළ නොවන ගැටලු නිසා දේවල් මෙතරම් සංකීර්ණ වන්නේ ඇයි?
ඉල්යා ස්ට්‍රෙල්ට්සින්

24

අමතර සලකුණු නොමැතිව පාවෙන ඉවත් කිරීමට පිටාර ගැලීමේ දේපල භාවිතා කළ හැකිය:

.container { overflow: hidden; }

IE6 හැර අනෙකුත් සියලුම බ්‍රව්සර් සඳහා මෙය ක්‍රියා කරයි, එහිදී ඔබ කළ යුත්තේ hasLayout සක්‍රීය කිරීමයි (විශාලනය මගේ ප්‍රියතම ක්‍රමයයි):

.container { zoom: 1; }

http://www.quirksmode.org/css/clearing.html


3
පිටාර ගැලීම: සැඟවුණු PS3 බ්‍රව්සරයේ ක්‍රියා නොකරයි. බොහෝ අයට එය වැඩ කිරීමට අවශ්‍ය බව නොවේ, නමුත් එය ව්‍යාපාරික හේතුන් මත ඉලක්ක කිරීමට අප උත්සාහ කරන PS3 හි මගේ වෙබ් අඩවිය පුපුරවා හැරීම වඩාත්ම වැදගත් දෙයයි. අහ්.
gtd

1
යම් අන්තර්ගතයක් කන්ටේනරයෙන් පිටත එල්ලීමට ඔබට අවශ්‍ය නම් එය ගැටළුවක්.
සයිමන් ඊස්ට්

පිටාර ගැලීම: සැඟවුණු අන්තර්ගතයේ ක්ලිප් කිරීමේ නරක අතුරු ආබාධයක් ඇත
ක්‍රිස් කැලෝ

9
overflow:hiddenඅන්තර්ගතය ක්ලිප් කිරීමේ බලපෑම ඇත; එය කන්ටේනරය පිරිසිදු කිරීමේ අතුරු ආබාධයක් ඇත ;-)
ටැම්ලින්

පිටාර ගැලීම: ස්වයංක්‍රීයව බ්ලොක් හැඩතල ගැන්වීමේ සන්දර්භයක් අවුලුවන අතර එය අන්තර්ගතය පටවන්නේ නැත.
හැරී රොබින්ස්

18

නිල CLEARFIX-Method හි දෝෂයක් මට හමු විය: DOT හි අකුරු ප්‍රමාණයක් නොමැත. ඔබ height = 0ඔබේ ඩොම්-ට්‍රී හි පළමු මූලද්‍රව්‍යය සකසා ඇත්නම් “ක්ලියර්ෆික්ස්” පන්තිය ඔබට සෑම විටම 12px පිටුවේ පතුලේ ආන්තිකයක් ඇත :)

ඔබ එය මේ ආකාරයට නිවැරදි කළ යුතුයි:

/* float clearing for everyone else */
.clearfix:after{
  clear: both;
  content: ".";
  display: block;
  height: 0;
  visibility: hidden;
  font-size: 0;
}

එය දැන් YAML-Layout හි කොටසකි ... එය දෙස බලන්න - එය ඉතා සිත්ගන්නා සුළුය! http://www.yaml.de/en/home.html


16

මෙය තරමක් පිළිවෙලට විසඳුමකි:

/* For modern browsers */
.cf:before,
.cf:after {
    content:"";
    display:table;
}

.cf:after {
    clear:both;
}

/* For IE 6/7 (trigger hasLayout) */
.cf {
    zoom:1;
}

එය ෆයර්ෆොක්ස් 3.5+, සෆාරි 4+, ක්‍රෝම්, ඔපෙරා 9+, අයිඊ 6+ හි වැඩ කරන බව දන්නා කරුණකි

ඇතුළත් කිරීම: පෙර තේරීම් කාරකය පාවෙන ඉවත් කිරීමට අවශ්‍ය නොවන නමුත් නවීන බ්‍රව්සර්වල ඉහළ ආන්තිකයන් බිඳ වැටීම වළක්වයි. විශාලනය: 1 යොදන විට IE 6/7 සමඟ දෘශ්‍ය අනුකූලතාවයක් ඇති බව මෙයින් සහතික කෙරේ.

Http://nicolasgallagher.com/micro-clearfix-hack/ වෙතින්


1
ඔව්, 2011 මැද භාගය වන විට මෙය මගේ ප්‍රියතම විසඳුමයි. අවශ්‍ය නම් අඩංගු කොටුවෙන් පිටත වස්තූන් ස්ථානගත කිරීමට එය ඔබට ඉඩ සලසයි (මග හැරීම overflow: hidden).
සයිමන් ඊස්ට්

11

Bootstrap වෙතින් Clearfix:

.clearfix {
  *zoom: 1;
}

.clearfix:before,
.clearfix:after {
  display: table;
  line-height: 0;
  content: "";
}

.clearfix:after {
  clear: both;
}

මෙය කුමන බූට්ස්ට්‍රැප් අනුවාදයෙන්ද?
එරික්

9

මම දැන් භාවිතා කරන්නේ: -

.clear:after{
  clear: both;
  content: "";
  display: block;
}

IE8 + සමඟ වඩාත්ම ගැලපෙන පරිදි ක්‍රියා කරයි :)


CSS ව්‍යාජ සැකසුම් සඳහා සහය නොදක්වන බැවින් IE7 හි වැඩ නොකරනු ඇත.
superluminary

4
... ඒ නිසයි ඔහු "IE8 + සමඟ අනුකූලයි" කියා කීවේ. බොහෝ වෙබ් අඩවි වලට තවදුරටත් IE7 සඳහා සහය දැක්වීමට අවශ්‍ය නැත, එහි භාවිතය ලොව පුරා 1% ට වඩා අඩුය. theie7countdown.com
ජස්ටින්

9

විශාල පිළිතුරු ප්‍රමාණයක් ලබා දී ඇති බැවින් මම පළ නොකරමි. කෙසේ වෙතත්, මෙම ක්‍රමය මට උපකාර කළ පරිදි යමෙකුට උපකාර කළ හැකිය.

හැකි සෑම විටම පාවෙන වලින් stay ත්ව සිටින්න

සඳහන් කිරීම වටී, මම ඉබෝලා වැනි පාවෙන මගහරින්නෙමි. හේතු රාශියක් ඇති අතර මම තනිවම නොවේ; පැහැදිලි කිරීමක් යනු කුමක්ද යන්න පිළිබඳ රිකුඩෝ පිළිතුර කියවන්න, එවිට මා අදහස් කරන දේ ඔබට පෙනෙනු ඇත. ඔහුගේම වචන වලින්:...the use of floated elements for layout is getting more and more discouraged with the use of better alternatives...

පාවෙන ඒවා හැර වෙනත් හොඳ (සහ සමහර විට වඩා හොඳ) විකල්ප තිබේ. තාක්‍ෂණය දියුණු වන විට සහ වැඩිදියුණු වන විට, ෆ්ලෙක්ස්බොක්ස් (සහ වෙනත් ක්‍රම) පුළුල් ලෙස භාවිතා කිරීමට යන අතර පාවෙන දේ නරක මතකයක් බවට පත්වනු ඇත. සමහර විට CSS4 ද?


පාවෙන වැරදි හැසිරීම සහ අසමත් වූ නිෂ්කාශනයන්

පළමුවෙන්ම, සමහර විට, ඔබේ ජීවිතාරක්ෂකයාට සිදුරු කරන තෙක් සහ ඔබේ html ප්‍රවාහය ගිලෙන්නට පටන් ගන්නා තෙක් ඔබ පාවෙන වලින් ආරක්ෂිත යැයි සිතිය හැකිය:

පහත දැක්වෙන http://codepen.io/omarjuvera/pen/jEXBya කේතයේ , <div classs="clear"></div>(හෝ වෙනත් මූලද්‍රව්‍යයක්) සමඟ පාවෙන පවිත්‍ර කිරීමේ පුරුද්ද සාමාන්‍ය දෙයක් වන නමුත් එයට විරුද්ධ හා අර්ථකථන විරෝධී ය.

<div class="floated">1st</div>
<div class="floated">2nd</div>
<div class="floated">3nd</div>
<div classs="clear"></div> <!-- Acts as a wall -->
<section>Below</section>

CSS

div {
    border: 1px solid #f00;
    width: 200px;
    height: 100px;
}

div.floated {
    float: left;
}

.clear {
    clear: both;
}
section {
    border: 1px solid #f0f;
}

කෙසේ වෙතත් , ඔබේ පාවෙන යාත්‍රාව වටිනවා යැයි ඔබ සිතූ මොහොතේම ... උත්පාතය! තිරයේ ප්‍රමාණය කුඩා වන විට පහත ග්‍රැෆික් වැනි අමුතු හැසිරීම් ඔබට පෙනේ (එකම http://codepen.io/omarjuvera/pen/jEXBya ):

පාවෙන දෝෂ නියැදිය 1

ඔබ සැලකිලිමත් විය යුත්තේ ඇයි? නිශ්චිත සංඛ්‍යාවක් ගැන මට විශ්වාස නැත, නමුත් භාවිතා කරන උපාංගවලින් 80% ක් (හෝ ඊට වැඩි) කුඩා තිර සහිත ජංගම උපාංග වේ. ඩෙස්ක්ටොප් පරිගණක / ලැප්ටොප් පරිගණක තවදුරටත් රජ නොවේ.


එය එතැනින් අවසන් නොවේ

පාවෙන එකම ගැටළුව මෙය නොවේ. බොහෝ දේ ඇත, නමුත් මෙම උදාහරණයේ දී සමහරු පැවසිය හැකිය all you have to do is to place your floats in a container. නමුත් ඔබට කේතපදයේ සහ ග්‍රැෆික් වල දැකිය හැකි පරිදි එය එසේ නොවේ. පෙනෙන විදිහට එය නරක අතට හැරී ඇත:

HTML

<div id="container" class="">
  <div class="floated">1st</div>
  <div class="floated">2nd</div>
  <div class="floated">3nd</div>
</div> <!-- /#conteiner -->
<div classs="clear"></div> <!-- Acts as a wall -->
<section>Below</section>

CSS

#container {
  min-height: 100px; /* To prevent it from collapsing */
  border: 1px solid #0f0;
}
.floated {
    float: left;
    border: 1px solid #f00;
    width: 200px;
    height: 100px;
}

.clear {
    clear: both;
}
section {
    border: 1px solid #f0f;
}

ප්රති result ලය සඳහා?

එය *** එකම ය! පාවෙන දෝෂ නියැදිය 2

ඔබ දන්නා තරමින්, ඔබ CSS සාදයක් ආරම්භ කර, සියලු ආකාරයේ තේරීම් සහ දේපල සාදයට ආරාධනා කරයි; ඔබ ආරම්භ කළ දෙයට වඩා ඔබේ CSS විශාල අවුලක් ඇති කරයි. ඔබේ පාවෙන සවි කිරීමට.


CSS Clearfix ගලවා ගැනීමට

මෙම සරල හා ඉතා අනුවර්තනය කළ හැකි CSS කෑල්ල අලංකාරයක් සහ “ගැළවුම්කරුවෙකු” වේ:

.clearfix:before, .clearfix:after { 
    content: "";
    display: table;
    clear: both;
    zoom: 1; /* ie 6/7 */
}

ඒක තමයි! එය සැබවින්ම අර්ථ නිරූපණය නොකොට ක්‍රියාත්මක වන අතර එය ක්‍රියාත්මක වන බව මා සඳහන් කළාද? :

එකම නියැදියෙන් ... HTML

<div class="clearfix">
    <div class="floated">1st</div>
    <div class="floated">2nd</div>
    <div class="floated">3nd</div>
</div>
<section>Below</section>

CSS

div.floated {
    float: left;
    border: 1px solid #f00;
    width: 200px;
    height: 100px;
}
section {
        border: 4px solid #00f;
}


.clearfix:before, .clearfix:after { 
    content: "";
    display: table;
    clear: both;
    zoom: 1; /* ie 6/7 */
}

දැන් අපට තවදුරටත් අවශ්‍ය නොවන <div classs="clear"></div> <!-- Acts as a wall -->අතර අර්ථකථන පොලිසිය සතුටින් තබන්න. මෙය එකම වාසිය නොවේ. මෙම පැහැදිලි කිරීම ඕනෑම තිර ප්‍රමාණයකට @mediaසරලම ආකාරයෙන් භාවිතා නොකර ප්‍රතිචාර දක්වයි . වෙනත් වචන වලින් කිවහොත්, එය ඔබගේ පාවෙන භාජනය පාලනය කර ගංවතුර වැළැක්වීම සඳහා තබා ගනී. අවසාන වශයෙන්, එය පැරණි බ්‍රව්සර් සඳහා එක් කුඩා කරාතේ චොප් එකකින් සහය ලබා දෙයි =)

මෙන්න නැවතත් පැහැදිලි කිරීම

.clearfix:before, .clearfix:after { 
    content: "";
    display: table;
    clear: both;
    zoom: 1; /* ie 6/7 */
}

2
clearපන්තියේ නම සහිත මූලද්‍රව්‍යය ක්‍රියා නොකිරීමට හේතුව ඔබේ ගුණාංගය classවැරදිය. ඔබ ලියා ඇත්තේ classsඅතිරේකයකි s.
චෙස්නට්

දෝෂ නිවැරදි කිරීමෙන් පසුව පවා ඔබ පවසන දේ ඔබගේ උදාහරණයෙන් පෙන්නුම් නොකරයි.
මොනිකා නැවත ස්ථාපනය කරන්න - නොට්මිනාර්ඩ්

8

මම සෑම විටම මගේ ජාලකයේ ප්‍රධාන කොටස් පාවෙන අතර පාදකයට අදාළ clear: both;කරමි. ඒ සඳහා අමතර අංශයක් හෝ පන්තියක් අවශ්‍ය නොවේ.


නීල්, මම හිතන්නේ ඔබේ තීරු දෙකටම (හෝ පසුබිම් වර්ණයක් / රූපයක්) මායිමක් අවශ්‍ය වූ විට, කරදරය පැමිණේ.
සයිමන් ඊස්ට්

6

අවංකව; සියලු විසඳුම් විදැහුම්කරණ දෝෂයක් නිවැරදි කිරීම සඳහා කඩුල්ලක් සේ පෙනේ ... මම වැරදිද?

මම <br clear="all" />පහසුම, සරලම බව සොයාගෙන ඇත. class="clearfix"සෑම තැනකම දැකීමෙන් බාහිර සලකුණු මූලද්‍රව්‍යයන්ට විරුද්ධ වන කෙනෙකුගේ සංවේදීතාවන්ට පහර දිය නොහැක. ඔබ ගැටලුව වෙනත් කැන්වසයක පින්තාරු කරනවා.

මම ද display: hiddenවිසඳුම භාවිතා කරමි , එය විශිෂ්ට වන අතර අමතර පන්ති ප්‍රකාශන හෝ html සලකුණු කිරීම අවශ්‍ය නොවේ ... නමුත් සමහර විට ඔබට කන්ටේනරය පිටාර ගැලීම සඳහා මූලද්‍රව්‍ය අවශ්‍ය වේ, උදා. ලස්සන රිබන් සහ සාස්


5
overflow: hiddenමම හිතන්නේ ඔබ අදහස් කළේ
අජ්බෙවන්

සමහරු පන්තිය යනුවෙන් හැඳින්වෙන පංතිය භාවිතා කිරීම නිර්දේශ කරයි. මෙය හසු නොවන්නේ මන්දැයි මට අවංකවම විශ්වාස නැත
ඩේමන්

මම මේ තනතුර සම්පූර්ණයෙන්ම ඉවත් කරනවා. මම දැන් ක්ලියර්ෆික්ස් භාවිතා කරමි. නමුත් ඉතා සුලභ බහාලුම්වල, පන්ති ආරෝපණ දූෂණය අවම කිරීම සඳහා මම එය සීඑස්එස් තුළට පුළුස්සමි. එසේම, එය 'කණ්ඩායම' ලෙස නම් කිරීම සතුටක්. ටයිප් කිරීමට අඩු අක්ෂර ද
duggi


5

SASS සමඟ, පැහැදිලි කිරීම:

@mixin clearfix {
    &:before, &:after {
        content: '';
        display: table;
    }
    &:after {
        clear: both;
    }
    *zoom: 1;
}

එය භාවිතා කරන්නේ:

.container {
    @include clearfix;
}

ඔබට නව පැහැදිලි කිරීමක් අවශ්‍ය නම්:

@mixin newclearfix {
    &:after {
        content:"";
        display:table;
        clear:both;
    }
}

5

අඩු ( http://lesscss.org/ ) සමඟ යමෙකුට පැහැදිලි පැහැදිලි උපකාරයක් නිර්මාණය කළ හැකිය:

.clearfix() {
  zoom: 1;
  &:before { 
    content: ''; 
    display: block; 
  }
  &:after { 
    content: ''; 
    display: table; 
    clear: both; 
  }
}

ගැටළු සහගත බහාලුම් සමඟ එය භාවිතා කරන්න, උදාහරණයක් ලෙස:

<!-- HTML -->
<div id="container">
  <div id="content"></div>
  <div id="sidebar"></div>
</div>
/* LESS */
div#container {
  .clearfix();
}

5

පාවෙන බහාලුමේ මව් මූලද්‍රව්‍යයක් තිබේ නම් ie6 සඳහා overflow:hidden/ autoසහ උස භාවිතා කිරීම ප්‍රමාණවත් වේ.

පහත දැක්වෙන HTML පාවෙන ඉවත් කිරීම සඳහා # ටෙස්ට් වලින් එකක් වැඩ කළ හැකිය.

#test {
  overflow:hidden; // or auto;
  _height:1%; forces hasLayout in IE6
}

<div id="test">
  <div style="floatLeft"></div>
  <div style="random"></div>
</div>

සමහර විට මෙය ie6 සමඟ වැඩ කිරීම ප්‍රතික්ෂේප කරන විට, පාවෙන දේ ඉවත් කිරීම සඳහා දෙමව්පියන් පාවෙන්න.

#test {
  float: left; // using float to clear float
  width: 99%;
}

කිසි විටෙකත් වෙනත් ආකාරයේ නිශ්කාෂණ අවශ්‍ය නොවීය. සමහර විට මම මගේ HTML ලියන ආකාරය විය හැකිය.


1
කිසිදු අංගයක් ඉවත් නොකර ඔබේ HTML ලිවීමේ ක්‍රමය අධ්‍යයනය කිරීමට මම කැමතියි. ඔබට සබැඳි කිහිපයක් පළ කළ හැකිද?
ස්ටාර්ක්ස්

4

මම මේ සියලු විසඳුම් අත්හදා <html>බැලුවෙමි, මම පහත කේතය භාවිතා කරන විට මූලද්‍රව්‍යයට විශාල ආන්තිකයක් එකතු වේ:

.clearfix:after {   
    visibility: hidden;   
    display: block;   
    content: ".";   
    clear: both;   
    height: 0;
}

අවසාන වශයෙන්, මම font-size: 0;ඉහත CSS එකට එකතු කිරීමෙන් ආන්තික ගැටළුව විසඳුවා .


2
ඒ ඔබ රේඛාවක් එක් කරන නිසා ., භාවිතා කරන්නcontent: ""
හතළිස්

4

නව දර්ශන අගයක් එක් පේළියක කාර්යයට පෙනේ.

display: flow-root;

W3 පිරිවිතරයෙන්: "මූලද්‍රව්‍යය බ්ලොක් බහාලුම් පෙට්ටියක් ජනනය කරන අතර එහි අන්තර්ගතය ප්‍රවාහ පිරිසැලසුම භාවිතා කරයි. එය සෑම විටම එහි අන්තර්ගතයන් සඳහා නව වාරණ ආකෘතිකරණ සන්දර්භයක් ස්ථාපිත කරයි."

තොරතුරු: https://www.w3.org/TR/css-display-3/#valdef-display-flow-root https://www.chromestatus.com/feature/5769454877147136

Above ඉහත සබැඳියේ පෙන්වා ඇති පරිදි, සහාය දැනට සීමිත බැවින් පහත දැක්වෙන පසුබෑමේ සහාය ප්‍රයෝජනවත් විය හැකිය: https://github.com/fliptheweb/postcss-flow-root


3

මමත් පාවෙනවා #content, ඒ ආකාරයෙන් තීරු දෙකේම පාවෙන අඩංගු වේ. #contentපැති තීරුව ඉවත් නොකර ඇතුළත මූලද්‍රව්‍ය ඉවත් කිරීමට එය ඔබට ඉඩ සලසන බැවිනි .

එතුම සමඟ එකම දේ, තීරු දෙක එතීමට ඔබට එය වාරණ ආකෘතිකරණ සන්දර්භයක් බවට පත් කිරීමට අවශ්‍ය වේ.

මෙම ලිපියේ ඔබට භාවිතා කළ හැකි ප්‍රේරක කිහිපයක් සඳහන් කරයි: අවහිර කිරීමේ ආකෘතිකරණ සන්දර්භය .


3

ක්ලියර්ෆික්ස් යනු මූලද්‍රව්‍යයක් ස්වයංක්‍රීයව ඉවත් වූ ක්‍රමයක් වන අතර එමඟින් ඔබට අමතර සලකුණු එකතු කිරීමට අවශ්‍ය නොවේ.

.clearfix:after {
   content: " "; /* Older browser do not support empty content */
   visibility: hidden;
   display: block;
   height: 0;
   clear: both;
}
.cleaner {
  clear: both;
}

සාමාන්‍යයෙන් ඔබට පහත පරිදි යමක් කිරීමට අවශ්‍ය වනු ඇත:

<div style="float: left;">Sidebar</div>
<div class="cleaner"></div> <!-- Clear the float -->

Clearfix සමඟ, ඔබට අවශ්‍ය වන්නේ පමණි

<div style="float: left;" class="clearfix">Sidebar</div>
<!-- No Clearing div! -->

2

HTML හි 1 පේළිය එම කාර්යය කිරීමට css හැක් භාවිතා කිරීමට උත්සාහ කරන්නේ ඇයි? රේඛාවට නැවත පැමිණීම සඳහා අර්ථකථන HTML tu put break භාවිතා නොකරන්නේ ඇයි?

Fo me භාවිතා කිරීමට වඩා හොඳ ය:

<br style="clear:both" />

ඔබේ HTML හි කිසිදු ශෛලියක් ඔබට අවශ්‍ය නැතිනම් ඔබේ විවේකය සඳහා පන්තිය භාවිතා .clear { clear:both; }කර ඔබේ CSS තුළට දැමිය යුතුය .

මෙහි ඇති වාසිය:

  • රේඛාවට නැවත පැමිණීම සඳහා html හි අර්ථාන්විත භාවිතය
  • CSS පැටවීමක් නොමැති නම් එය ක්‍රියාත්මක වේ
  • අමතර CSS කේත සහ හැක් අවශ්‍ය නොවේ
  • CSS සමඟ br අනුකරණය කිරීමට අවශ්‍ය නැත, එය දැනටමත් HTML වල පවතී

2

ඔබ මෙම HTML ව්‍යුහය භාවිතා කරයි යැයි උපකල්පනය කරන්න:

<div id="container">
  <div id="content">
  </div>
  <div id="sidebar">
  </div>
</div>

මෙන්න මම භාවිතා කරන CSS:

div#container {
    overflow: hidden;    /* makes element contain floated child elements */
}

div#content, div#sidebar {
    float: left;
    display: inline;    /* preemptively fixes IE6 dobule-margin bug */
}

මම මෙම කට්ටලය නිතරම භාවිතා කරන අතර එය IE6 හි පවා මට හොඳින් ක්‍රියාත්මක වේ.


2

අනෙකුත් පැහැදිලි කිරීම් මෙන් නොව, මෙන්න බහාලුම් නොමැතිව විවෘතව පවතින එකක්

වෙනත් පැහැදිලි කිරීම් සඳහා පාවෙන මූලද්‍රව්‍යය හොඳින් සලකුණු කරන ලද භාජනයක තිබිය යුතුය <div>. අනෙක් අතට, අන්තර්ගතය පැහැදිලිව වෙන් කිරීම සහ සලකුණු කිරීම මෙම ගැටළුවට දැඩි CSS විසඳුමක් අවශ්‍ය වේ .

යමෙකුට පාවෙන අවසානය සලකුණු කිරීමට අවශ්‍යය යන කාරණය, නොදුටු CSS යතුරුලියනය සඳහා ඉඩ නොදේ .

දෙවැන්න ඔබේ ඉලක්කය නම්, පාවෙන ඕනෑම දෙයක් සඳහා (ඡේද, ඇණවුම් කළ හා අනුපිළිවෙලට නැති ලැයිස්තු ආදිය) විවෘතව තැබිය යුතුය. උදාහරණයක් ලෙස, පැහැදිලි කිරීම නව ශීර්ෂයකින් සැකසිය හැක.

අළුත් ශීර්ෂයන් සමඟ මම පහත සඳහන් පැහැදිලි කිරීම් භාවිතා කරන්නේ මේ නිසා ය:

h1 {
    clear: both;
    display: inline-block;
    width: 100%;
}

ගැටළුව විසඳීම සඳහා මෙම විසඳුම මගේ වෙබ් අඩවියේ පුළුල් ලෙස භාවිතා වේ : පාවෙන කුඩා රූපයක් අසල ඇති පෙළ කෙටි වන අතර ඊළඟ නිෂ්කාශන වස්තුවේ ඉහළ ආන්තිකයට ගරු නොකෙරේ.

වෙබ් අඩවියෙන් පී.ඩී.එෆ් ස්වයංක්‍රීයව ජනනය කිරීමේදී එය අතින් මැදිහත් වීම වළක්වයි . මෙන්න උදාහරණ පිටුවක් .


2

මම සෑම විටම මයික්‍රෝ ක්ලියර්ෆික්ස් භාවිතා කරමි :

.cf:before,
.cf:after {
    content: " ";
    display: table;
}

.cf:after {
    clear: both;
}

/**
 * For IE 6/7 only
 */
.cf {
    *zoom: 1;
}

දී වාරි රාමුව මම වාරණ මට්ටමේ අංග මත පෙරනිමියෙන් එය අදාළ වේ. IMO, එය පෙරනිමියෙන් බ්ලොක් මට්ටමේ මූලද්‍රව්‍ය මත යෙදීමෙන් බ්ලොක් මට්ටමේ මූලද්‍රව්‍යයන්ට ඒවායේ වෙළඳාමේ හැසිරීමට වඩා බුද්ධිමත් හැසිරීමක් ලබා දේ. පැරණි බ්‍රව්සර් සඳහා කැස්කැඩ් රාමුවට (IE6-8 මෙන්ම නවීන බ්‍රව්සර් සඳහා සහය දක්වන) සහය එක් කිරීමද එය මට පහසු කළේය.


0

ඔබට මෙය ඔබේ CSS තුළ ද තැබිය හැකිය:

.cb:after{
  visibility: hidden;
  display: block;
  content: ".";
  clear: both;
  height: 0;
}

*:first-child+html .cb{zoom: 1} /* for IE7 */

ඔබේ මවුපියන්ට "cb" පන්තිය එක් කරන්න:

<div id="container" class="cb">

ඔබේ මුල් කේතයට වෙනත් කිසිවක් එකතු කිරීමට ඔබට අවශ්‍ය නොවනු ඇත ...



-2

ඔබ මෙය උත්සාහ කර තිබේද:

<div style="clear:both;"/>

මට මෙම ක්‍රමවේදය පිළිබඳ කිසිදු ගැටළුවක් නොමැත.


2
මම හිතන්නේ කාරණය වන්නේ අපි මෙම විසඳුම සමඟ අමතර සලකුණු සහ පේළිගත විලාසයන් වළක්වා ගැනීමට උත්සාහ කිරීමයි. එය රඳා පවතින්නේ මා සිතන පරිදි ඔබේ ප්‍රීතිමත්ම සම්මුතියයි
සෑම් මරේ-සුටන්

1
මෙම ක්‍රමයේ ඇති ගැටළුව නම් IE බ්‍රව්සර් වල div හි උස ඇති බැවින් ඔබේ පරතරය අක්‍රිය වනු ඇත. Css ක්‍රම මගින් උස සහ අකුරු ප්‍රමාණය නියම කරන්නේ එබැවිනි.
zznq

නිසි ලෙස XHTML අනුකූල වීම සඳහා නිසි සංවෘත ටැගයක් සහිත <div style = "clear: both"> </div> ඔබට පැවසිය යුතුය. මෙය නොකරන විට මට jQuery ගැටළු තිබේ
සයිමන්_වීවර්

1
උත්ප‍්‍රාසාත්මක ලෙස, “ස්වයං-සංවෘත යැයි කියනු ලැබේ” <div/> යනු එක්ස් (එච්ටී) එම්එල් අනුකූල වේ, නමුත් එය HTML අනුකූල නොවේ , එබැවින් text/htmlසියලුම බ්‍රව්සර් ලෙස සේවය කරන ලියකියවිලි එය අනාවරණය නොකළ ටැගයක් ලෙස සලකනු ඇත. අවාසනාවකට මෙන්, ඩොක්ටයිප් නොසලකාtext/html ලේඛන සඳහා ස්වයං වසා දැමීමේ ටැග් වැනි දෙයක් නොමැත .
ඉල්යා ස්ට්‍රෙල්ට්සින්

-2

මගේ ප්‍රියතම ක්‍රමය වන්නේ පහත දැක්වෙන පරිදි මගේ css / scss ලේඛනයේ පැහැදිලි පංතියක් නිර්මාණය කිරීමයි

.clearfix{
    clear:both
}

පහත දැක්වෙන පරිදි එය මගේ html ලේඛනයට අමතන්න

<html>
  <div class="div-number-one">
    Some Content before the clearfix
  </div>

  <!-- Let's say we need to clearfix Here between these two divs --->
  <div class="clearfix"></div>

  <div class="div-number-two">
    Some more content after the clearfix
  </div>
</html>

-3

එය ඉතා සරල ක්ලියර්ෆික්ස් මඟින් අප විසින් මූලද්‍රව්‍යය තුළ ඇති පාවෙන ගුණාංග භාවිතා කරන විට ගැටළුව නිරවුල් කරනු ලැබේ. අනෙක පාවෙන ලෙස: හරි; ද්වි මූලද්‍රව්‍යයේ මාපිය සඳහා අපට පැහැදිලි ෆික්ස් භාවිතා කළ හැකිය. අප ක්ලියර්ෆික්ස් භාවිතා කිරීම ප්‍රතික්ෂේප කළහොත් අනවශ්‍ය අවකාශයන් පහත අන්තර්ගතයෙන් පුරවා අඩවි ව්‍යුහය බිඳී යනු ඇත.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.