CSS布局

一.标准流和display

1.标准流:浏览器对标签默认的布局方式就是标准流
2.标准流布局原则
块级:
a.块级标签一个占一行(不管标签的宽度是否是父标签的宽度)
b.默认宽度是父标签的宽度,默认高度是内容的高度
c.直接设置宽高有效
行内块标签:
a.多个行内块可以在一行显示
b.默认宽高都是内容的宽高
c.直接设置宽高有效
行内标签(a标签):
a.多个行内标签可以在一行显示
b.默认宽高都是内容的宽高
c.直接设置宽高无效
3.display属性:转换标签的性质
block:块级
inline:行内
inline-block:行内块
注意:行内块标签和其他标签之间默认有间隙,而且这个间隙无法消除

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div1{
                background-color: aquamarine;
                display: inline-block;
                width: 100px;
                height: 100px;
            }
            #div2{
                background-color: cornflowerblue;
                width: 100px;
                height: 100px;
            }
        </style>
    </head>
    <body>
        <!--默认是块级-->
        <div id="div1">
            aaa
        </div>
        <div id="div2">
            abcabc
        </div>
        <!--默认是行内-->
        <a href="">百度一下</a>
        <a href="">大头</a>       
        <!--默认是行内块-->
        <img src=""/>
    </body>
</html>

二.浮动

1.怎么浮动
通过给CSS中的属性float赋值为left或right,来让标签浮动,浮动会让标签脱离标准流
浮动的目的就是让竖着显示的可以横着显示(针对块)
2.浮动的效果:
a.所有的标签浮动后,一行可以显示多个,默认的宽高是内容的大小,可以设置宽度和高度
b.一行显示不了的时候才会自动换行

3.注意事项:
a.如果同一级的标签,后边的需要浮动,前面的也要浮动,否则可能会出现显示的问题
b.浮动的标签不占池底位置,只占水面的位置,不浮动的既占池底又占水面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="" style="height: 200px;float: left;width: 100%;background-color: #6495ED;">
            
        </div>
        <div id="" style="width: 30%;height: 1000px;float: left;background-color: #FF69B4;">
            
        </div>
        <div id=""style="width: 40%;height: 1000px;float: left;background-color:chartreuse;">
            
        </div>
        <div id=""style="width: 30%;height: 1000px;float: left;background-color: deepskyblue;">
            
        </div>
    </body>
</html>

文字环绕效果:
被环绕的标签浮动,文字对应的标签不浮动。就会自动产生文字环绕的效果

三.清除浮动

清除浮动:清除浮动不是将标签的浮动给去掉,而是清除因为浮动而产生的高度塌陷的问题
高度塌陷:父标签不浮动,子标签浮动,并且不设置父标签的高度,就会产生高度塌陷的问题(父标签)
方案一:添加空盒子,在高度塌陷的标签(父标签)的最后添加一个空的div,并设置样式clear的值为both
方案二:给父标签添加样式设置overflow的值为hidden
方案三: 万能清除法

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            
            /*方案二:设置overflow*/
            /*#father{
                overflow: hidden;
            }*/
            
            /*方案三:*/
            #father:after{
                display: block;
                clear: both;
                content: '';
                visibility: hidden;
                height: 0;
            }
            #father{
                zoom: 1;
            }
            
        </style>
    </head>
    <body>
        <div style="background-color: salmon; height: 120px;"></div>
        <div id="father" style="background-color: seagreen;">
            <div id="" style="background-color: skyblue; height: 100px; float: left; width: 20%;">
                
            </div>
            <div id="" style="background-color: slateblue; height: 300px; float: right; width: 30%;">
                
            </div>
            <div style="background-color: salmon; width: 81%; float: left; height: 200px;"></div>
            
            <!--方案一:添加空盒子-->
            <!--<div id="" style="clear: both;"></div>-->
        </div>
        <div style="background-color: sienna; width: 100%;height: 200px;"></div>
        
    </body>
</html>

四.定位

CSS中可以通过left,right,bottom,top属性来设置标签到上下左右的距离(但是默认情况下这些值不是都有效的);
想要让定位属性有效,必须通过position属性来设置参考对象。

1.position
initial: 默认值, 没有相对定位
absolute: 相对第一个非static/initial父标签进行定位
relative: 相对于自己在标准流中位置来定位。(当标签本身不希望去定位,只是想让自己的子标签可以相对本身来定位的时候使用)
fixed:相对应浏览器定位
sticky:当网页的内容不超过一屏(不滚动)的时候,就按照标准流进行定位。超过了就相对浏览器定位

2.注意:如果想要设置right值要保证相对标签的宽度是确定的。如果想要设置bottom值要保证相对对象的高度是确定的

3.技巧:当遇到某个方向定位死活都无效的时候,可以尝试让这个标签浮动,然后再定位

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div1{
                right: 100px;
                bottom: 20px;
                position: absolute;
            }
        </style>
    </head>
    <body>
        
        <!--1.absolute-->
        <!--<div id="" style="background-color: skyblue; width: 700px; height: 800px;">
            <div id="" style="background-color: sandybrown; width: 400px; height: 400px; position: relative;">
            
                <div id="div1" style="background-color: seagreen; width: 100px; height: 100px;">
                </div>
            
            </div>
        </div>-->
        
        <!--2.relative-->
        <!--<div id="" style="background-color: lightskyblue; height: 100px;">
            
        </div>
        
        <div id="" style="background-color: sandybrown; height: 120px; width: 100px; top: 100px; position: relative;">
            
        </div>-->
        
        <!--3.fixed-->
        <!--<div id="top" style="background-color: chartreuse; height: 20000px;">
            aaaaaaaa
            <div id="" style="background-color: hotpink; width: 100px; height: 50px; right: 20px; bottom: 20px; position: fixed;">
                <a href="#top">回到顶部</a>
            </div>
        </div>-->
        
        <!--4.sticky-->
        <div id="top" style="background-color: chartreuse; height: 20000px;">
        </div>
        <div id="" style="background-color: hotpink; width: 100%; height: 50px; bottom: 20px; position: sticky;">
                <a href="#top">回到顶部</a>
        </div>      
    </body>
</html>

五.盒子模型

html中所有可见的标签都是一个盒子模型:包括长和宽决定的内容的大小、padding、border、margin四个部分组成。
其中内容、padding、border是可见,margin不可见

1.内容:设置width和height影响的就是内容部分的大小。添加子标签、添加内容都是放在内容部分的
2.padding:在内容的外围,可见部分,如果标签有背景颜色,那么这个部分的颜色和内容的一致
3.border:边框,border是在padding的外围,如果没有padding就在内容的外围,可见部分。可以设置颜色和大小
4.margin:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        
        <style type="text/css">
            div{
                background-color: skyblue;
                /*1.内容*/
                width: 100px;
                height: 100px;
                
                /*2.padding
                 * padding-方向:宽度
                 */
                /*padding-left: 20px;
                padding-top: 20px;
                padding-right: 20px;
                padding-bottom: 20px;*/
                /*同时设置上右下左的padding值*/
                /*padding: 10px 20px 100px 50px;*/
                
                /*同时设置上下和左右*/
                /*padding: 20px 100px;*/
                
                /*同时设置所有方向的padding都是20px*/
                padding: 100px;
                
                /*3.border:宽度 样式 颜色
                 * 样式:solid(实线)/dashed(虚线)dotted(点划线)double(双线)
                 */
                /*单独设置某一边的边框*/
                /*border-left: 20px solid red;*/
                
                /*同时设置四个边的边框*/
                border: 10px solid red;         
                
                /*4.margin:宽度
                 * 
                 */
                margin-left: 200px;
                    
            }
            
            input{
                padding-left: 20px;
            }
        </style>
        
    </head>
    <body>
        <input type="text" name="" id="" value="" />
        <div id="">
            abc卡的哈哈双方都世纪东方哈啥
        </div>
        
    </body>
</html>

六.其他常见属性

1.字体相关的属性
字体颜色:color
字体大小:font-size
字体名:font-family
字体加粗:font-weight(bolder(更粗的)/bold(加粗)/normal(常规)/100—900)
字体倾斜:font-style(italic/oblique/normal

    p{
                font-family:"微软雅黑";
                font-weight: 100;
                font-style: italic;
            }

2.对齐方式:text-align
left:左对齐
right:右对齐
center: 水平方向居中
```
p{
text-align: left;
}

3.行高:line-height
设置一行的高度
        ```
            p{
                /*一行内容在垂直方向上居中,可以通过将line-height的值设置为和height的值一样*/
                line-height: 100px;
            }
            ```
4.文本修饰:text-decoration
none: 取消修饰
underline:下划线
overline:上划线
line-through:删除线
        a,p{
            text-decoration: none;
        }
        a:hover{
            text-decoration: underline;
            color: red;
        }
5.首行缩进:text-indent
注意单位是:em(表示空格)
        p{
            text-indent: 2em;
        }
6.字间距:letter-spacing
单位可以是:px,em
    ```
            p{
                letter-spacing: 2px;
            }
    ```     
7.列表相关的
        ul{
            /*margin-left: 100px;*/
            /*list-style-type: none;*/
            list-style-image:url(img/luffy2.png);
            list-style-position:inside;
        }
```     

8.背景图片
background:图片地址 是否平铺 x方向的坐标 y方向的坐标 背景色
```
#div{

            width: 300px;
            height: 200px;
            /*background-image: url(img/luffy4.jpg);*/
            background: url(img/luffy2.png) no-repeat center 0px yellow;
            
        }
9.设置圆角

div{

            /*border-bottom-left-radius: 10px;
            border-radius: 30px;*/
            border-radius: 10px 100px;
            
            border:3px solid red;
        }





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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,741评论 1 92
  • 学会使用CSS选择器熟记CSS样式和外观属性熟练掌握CSS各种选择器熟练掌握CSS各种选择器熟练掌握CSS三种显示...
    七彩小鹿阅读 6,306评论 2 66
  • 1.标准流和display属性 1.标准流:浏览器对标签默认的布局方式就是标准流2.标准流则:块级:a.块级标签一...
    xaidc阅读 129评论 0 0
  • CSS 是什么 css(Cascading Style Sheets),层叠样式表,选择器{属性:值;属性:值}h...
    崔敏嫣阅读 1,475评论 0 5
  • 概述 在网易云课堂学习李南江老师的《从零玩转HTML5前端+跨平台开发》时,所整理的笔记。笔记内容为根据个人需求所...
    墨荀阅读 2,332评论 0 7