美文网首页
CSS布局问题

CSS布局问题

作者: 领家的小猫 | 来源:发表于2017-04-15 16:52 被阅读11次
1.居中布局:

水平居中:子元素于父元素水平居中且其(子元素与父元素)宽度均可变。

inline-block+text-align
<div class="parent">
     <div class="child">Demo</div>
 </div>
<style>
 .child { 
  display: inline-block;
  *display: inline;
  *zoom: 1;/**IE7中居中**/
 } 
.parent { text-align: center; }
</style>
兼容性佳(甚至可以兼容 IE 6 和 IE 7)

table+margin
<div class="parent"> 
  <div class="child">Demo</div>
</div>
<style> 
  .child { display: table; margin: 0 auto; }
</style>
display: table在表现上类似 block 元素,但是宽度为内容宽。支持 IE 8 及其以上版本。

absolute + transform
<div class="parent"> 
  <div class="child">Demo</div>
</div>
<style>
   .parent { position: relative; }
   .child { position: absolute; left: 50%; transform: translateX(-50%); }
</style>
transform为 CSS3 属性,有兼容性问题

flex + justify-content
<div class="parent">
 <div class="child">Demo</div>
</div>
<style> 
  .parent { display: flex; justify-content: center; }
   /* 或者下面的方法,可以达到一样的效果 */
  .parent { display: flex; } 
  .child { margin: 0 auto; }
</style>
有兼容性问题

2.垂直居中

子元素于父元素垂直居中且其(子元素与父元素)高度均可变。

table-cell + vertical-align
<div class="parent"> 
  <div class="child">Demo</div>
</div>
<style> 
  .parent { display: table-cell; vertical-align: middle; }
</style>
兼容性好(支持 IE 8,以下版本需要调整页面结构至 table)

absolute + transform
<div class="parent"> 
  <div class="child">Demo</div>
</div>
<style>
   .parent { position: relative; } 
   .child { position: absolute; top: 50%; transform: translateY(-50%); }
</style>
flex + align-items
<div class="parent"> 
  <div class="child">Demo</div>
</div>
<style> 
  .parent { display: flex; align-items: center; }
</style>
有兼容性问题

3.水平垂直居中

子元素于父元素垂直及水平居中且其(子元素与父元素)高度宽度均可变。

inline-block + text-align + table-cell + vertical-align
<div class="parent"> 
  <div class="child">Demo</div>
</div>
<style>
   .parent { text-align: center; display: table-cell; vertical-align: middle; } 
   .child { display: inline-block;}
</style>
兼容性好

absolute + transform
<div class="parent"> 
  <div class="child">Demo</div>
</div>
<style> 
  .parent { display: flex; justify-content: center; align-items: center; }
</style>

flex + justify-content + align-items
<div class="parent"> 
  <div class="child">Demo</div>
</div>
<style>
   .parent { display: flex; justify-content: center; align-items: center; }
</style>
有兼容性问题

4.多列布局

多列布局在网页中非常常见(例如两列布局),多列布局可以是两列定宽,一列自适应, 或者多列不定宽一列自适应还有等分布局等。

一列定宽,一列自适应
float + margin
<div class="parent"> 
  <div class="left"> 
    <p>left</p> 
  </div> 
  <div class="right">
     <p>right</p>
     <p>right</p> 
  </div>
</div>
<style> 
  .left { float: left; width: 100px; }
  .right { margin-left: 100px /*间距可再加入 margin-left */ }
</style>
NOTE:IE 6 中会有3像素的 BUG,解决方法可以在 .left加入 margin-left:-3px。

float + margin + (fix) 改造版
<div class="parent"> 
  <div class="left"> 
    <p>left</p> 
  </div> 
  <div class="right-fix">
     <div class="right">
       <p>right</p> 
       <p>right</p> 
     </div> 
  </div>
</div>
<style>
  .left { float: left; width: 100px; } 
  .right-fix { float: right; width: 100%; margin-left: -100px; }
  .right { margin-left: 100px /*间距可再加入 margin-left */ }
</style>
NOTE:此方法不会存在 IE 6 中3像素的 BUG,但 .left不可选择, 需要设置 .left {position: relative}来提高层级。 此方法可以适用于多版本浏览器(包括 IE6)。缺点是多余的 HTML 文本结构。

float + overflow
<div class="parent"> 
  <div class="left"> 
    <p>left</p>
  </div>
 <div class="right"> 
    <p>right</p> 
    <p>right</p>
 </div>
</div>
<style>
 .left { float: left; width: 100px; } 
 .right { overflow: hidden; }
</style>
设置 overflow: hidden会触发 BFC 模式(Block Formatting Context)块级格式化文本。 BFC 中的内容与外界的元素是隔离的
  • 不支持 IE 6

相关文章

  • 页面布局居中问题

    css页面布局水平垂直居中问题 居中问题

  • CSS经典布局

    CSS经典布局 本文主要对一些常见的CSS布局问题进行总结,涉及三栏布局、负margin、清除浮动、居中布局、Fl...

  • css布局问题

    一.水平居中 子元素为行内元素还是块状元素,宽度一定还是宽度未定,采取的布局方案不同。 子元素为 行内元素:对父元...

  • CSS布局问题

    1.居中布局: 水平居中:子元素于父元素水平居中且其(子元素与父元素)宽度均可变。 inline-block+te...

  • 文章收藏

    CSS布局 CSS布局方案整理

  • css

    css基础css选择器css常见样式1css常见样式2CSS布局上CSS布局下flex布局塔防小游戏flex布局青...

  • css flex布局详解

    css flex布局详解 css flex布局详解1css flex布局详解2

  • 经典CSS布局:双飞翼和圣杯布局

    圣杯布局 HTML CSS 双飞翼布局 HTML CSS Flex布局 HTML和圣杯布局一样CSS

  • 兼容性问题

    CSS兼容性问题PC页面布局兼容JS兼容问题移动页面兼容问题 CSS兼容问题.header {_width:100...

  • updating...

    CSS 1、三栏布局问题(左右固定宽度 中间自适应) flex grid float + margin 2、CSS...

网友评论

      本文标题:CSS布局问题

      本文链接:https://www.haomeiwen.com/subject/wotgattx.html