常见CSS布局


实现底部footer

  1. 外部有一个wrapper容器,要min-height:100%;撑满页面高度。
  2. footer参考wrapper绝对定位,用bottom:0定在底部
  3. main用来放置页面主体内容,padding-bottom与footer高度一致,用于页面长的时候给footer撑出高度

文本不换行省略效果

white-space: nowrap
overflow:hidden
text-overflow:ellipsis

瀑布流原理

瀑布流布局要求要进行布置的元素等宽,然后计算元素的宽度与浏览器宽度之比,得到需要布置的列数。
创建一个数组,长度为列数,里面的值为已布置元素的总高度(最开始为0)
然后将未布置的元素依次布置到高度最小的那一列,就得到了瀑布流布局。

transition一个速记法:transition: css属性 动画持续时间 动画类型 动画延迟时间;

两列布局一列宽度固定,一列宽度不固定

方法一:把side改写为绝对定位
.side{    
    position:absolute;left:0;top:0;    
    width:200px;height:200px;    
    background:red;    
}    
.main{    
    margin-left:210px;    
    background:blue;    
    height:200px;    
}  
方法二:把side改写为浮动
.side{    
    width:200px;    
    height:200px;    
    float:left;    
    background:red;    
}    
   
.main{    
    margin-left:210px;    
    background:blue;    
    height:200px;    
} 
方法三:flex布局
.parent {
    display:flex; 
}       
.side{    
   width:200px;    
   height:200px;    
    background:red;    
    margin-right:10px;    
}    
.main{    
    background:blue;    
    height:200px;    
    flex:1;    
}
方法四:利用BFC不与浮动元素重叠的特性

.side {    
  width: 200px;    
  height: 100px;    
  float: left;    
  background: red;    
  margin-right: 10px;    
/* 这里没有flex才能按自身设定的宽度渲染 */
/* 如果有了flex则宽度设定无效 */
}    
.main {    
  /* 创建BFC   */   
  overflow: hidden;    
  background: blue;    
  height: 100px;    
}  

如何进行水平垂直居中(行内块元素)

方案一:用display: table-cell;
内部元素如果是display:block;则无效
.box{
    display: table-cell;
    vertical-align:middle;/*垂直居中*/
    text-align:center;/*水平居中*/
}
方案二:单纯flex布局
.box{
    display: flex;
    justify-content:center;/*水平居中*/
    align-items:center;/*垂直居中*/
}
方案三:flex与margin:auto;结合
.box{
    display: flex;
}
button{margin: auto;}
方案四:绝对定位与0
.box{
    position:relative;/*需要父元素定位*/
}
button{
  overflow: auto; 
  margin: auto; 
  position: absolute; 
  top: 0; left: 0; bottom: 0; right: 0; 
}

三栏水平布局,其中 left 、 right 分别位于左右两边, left 宽度为 200px , right 宽度为 300px , main 处在中间,宽度自适应。

/*三栏结构大致如下*/
<divclass="container">
    <div class="main">main</div>
    <div class="left">left</div>
    <div class="right">right</div>
</div>
 //Flex 布局
 .container {
    display:flex;
}
.main{
    flex: 1;
    background-color:#eee;
}
.left{
    flex-basis:200PX;
    order:-1;
    background-color: lightblue;
}
.right {
    flex-basis: 300px;
    background-color:lightblue;
}
//方法二:绝对定位布局
    .container {
        position: relative;
    }
    .main {
        margin-left: 200px;
        margin-right: 300px;
    }
    
    .left {
        position: absolute;
        top: 0;
        /* 外层设置 padding 时才需要 */
        /*left: 0;*/
    }
    
    .right {
        position: absolute;
        top: 0;
        right: 0;
    }
    /* 圣杯布局 */
    .container {
        /* 这里不能使用 overflow: hidden; 清除浮动 */
        /* 不然会使 aside(.left & .right) 被 hidden */
        margin-left: 200px;
        margin-right: 160px;
    }
    
    .container::after {
        /* 借助伪元素清除浮动 */
        clear: both;
        display: block;
        content: '\200b';
        width: 0;
        height: 0;
    }
    
    .main {
        float: left;
        width: 100%;
    }
    
    .left {
        float: left;
        margin-left: -100%;
        position: relative;
        right: 200px;
    }
    
    .right {
        float: left;
        margin-right: -160px;
    }


    /*三栏的 HTML 结构大致如下:*/
    <main>
        <div class="content-wrapper">
            <div class="content"></div>
        </div>
        <aside class="left"></aside>
        <aside class="right"></aside>
    </main>
    /* 双飞翼布局 */
    main {
        /* 这里可以使用 overflow: hidden; 清除浮动 */
        overflow: hidden;
    }
    
    .content-wrapper {
        float: left;
        width: 100%;
    }
    
    .content {
        margin-left: 200px;
        margin-right: 160px;
    }
    
    .left {
        float: left;
        margin-left: -100%;
    }
    
    .right {
        float: left;
        margin-left: -160px;
    }
    /*三栏的 HTML 结构大致如下:*/
    <main>
        <aside class="left"></aside>
        <aside class="right"></aside>
        <div class="content"></div>
    </main>
    /* 流体布局 */
    .left {
        float: left;
    }

    .right {
        float: right;
    }

    .content {
        margin-left: 200px;
        margin-right: 160px;
    }
/* BFC布局 */
    .left {
        float: left;
    }
    
    .right {
        float: right;
    }
    
    .content {
        overflow: hidden;
    }
                
              

三栏平分布局

考查box-sizing属性
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
       <style type="text/css">
       #main{
        display: flex;
       }
        #left{width:100%;display:inline-block;flex:1;box-sizing:border-box}
        #center{width:100%;display:inline-block;flex:1;box-sizing:border-box}
        #right{width:100%;display:inline-block;flex:1;box-sizing:border-box}
       </style>
    </head>
    <body>
        <div id="main">
            <div id="left">left</div>
            <div id="center">center</div>
            <div id="right">right</div>
        </div>
    </body>
</html>

手写清除浮动的几种方式

方法一:添加空div标签 
clear:both
方法二:父级标签定义伪类after
.float-div::after{
            display: block;
            clear: both;
            content: '';
            height: 0px;
        }
上一级父元素:zoom:1;//解决IE67兼容问题
方法三:父级标签overflow:hidden
 .float-div{
            overflow:hidden;
        }

Meta标签的使用

meta标签的使用
meta标签共有两个属性:http-equiv和name;
name属性
    name属性主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的。其中name属性主要有以下几种参数:
Keywords(关键字)
举例:<meta name ="keywords" content="science, education,culture,politics,ecnomics,relationships, entertaiment, human">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
http-equiv属性
    http-equiv顾名思义,相当于http协议中文件头的作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content。
其中http-equiv属性主要有以下几种参数:
content-Type(显示字符集的设定)
用法:<meta http-equiv="content-Type" content="text/html; charset=gb2312">
Expires(期限)
用法:<meta http-equiv="expires" content="Fri, 12 Jan 2001 18:18:18 GMT">
注意:必须使用GMT的时间格式。
Pragma(cache模式)
说明:禁止浏览器从本地计算机的缓存中访问页面内容。
用法:<meta http-equiv="Pragma" content="no-cache">
Refresh(刷新)
说明:自动刷新并指向新页面。
用法:<meta http-equiv="Refresh" content="2; URL=http://www.root.net">
注意:其中的2是指停留2秒钟后自动刷新到URL网址。
Set-Cookie(cookie设定)
说明:设置cookie, 如果网页过期,那么存盘的cookie将被删除。
用法:<meta http-equiv="Set-Cookie" content="cookievalue=xxx; expires=Friday, 12-Jan-2001 18:18:18 GMT; path=/">
注意:必须使用GMT的时间格式。
Window-target(显示窗口的设定)
说明:强制页面在当前窗口以独立页面显示。
用法:<meta http-equiv="Window-target" content="_top">
注意:用来防止别人在框架里调用自己的页面。

媒体查询

@media screen and (min-width:600px) {
  nav {
    float: left;
    width: 25%;
  }
  section {
    margin-left: 25%;
  }
}
@media screen and (max-width:599px) {
  nav li {
    display: inline;
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 前言 温馨提示:本文较长,图片较多,本来是想写一篇 CSS 布局方式的,但是奈何 CSS 布局方式种类太多并且实现...
    sunshine小小倩阅读 3,137评论 0 59
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,747评论 1 92
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,312评论 0 11
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,745评论 0 2
  • 常见的两列布局 float浮动布局 flex布局 常见的三列布局 float浮动布局 position定位 fle...
    阿尔法乀阅读 347评论 0 0