css布局器的性质和用法

css的引入方式
四种 行内式 嵌入式 链接式 导入式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--方式2嵌入式:div为选择的标签,下面为属性名和属性值的键值对-->
    <style type="text/css">
        div{
            color: red;
            background-color: gray;
        }
    </style>

    <!--css引入方式3(推荐)链接式:直接引用css文件,href为css文件名-->
    <link type="text/css" rel="stylesheet" href="css.css">

    <!--css引入方式4导入式:直接引用css文件-->
    <style type="text/css">
        @import"css.css"; 此处要注意.css文件的路径
    </style>

    <!--导入式会在整个网页装载完后再装载CSS文件,-->
    <!--因此如果网页比较大则会出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。-->
    <!--使用链接式会在网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果。-->

</head>
<body>

    <!--css引入方式1行内式:直接写在标签内,键值对用分号隔开-->
    <p style="color: pink;background-color:cadetblue;">hello p</p>
    <!--css引入方式2嵌入式:在head中写style-->
    <div> hello div</div>

</body>
</html>

css选择器
选择器指明了{}中样式的作用对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--星号通用选择器,将所有标签统一操作-->
    <!--标签选择器,匹配所有使用p标签、div标签的元素-->
    <!--id选择器,匹配所有id属性等于p1的元素-->
    <!--class选择器,匹配所有class属性中包含c1的元素-->
    <style>
        *{
            font-size: 45px;
         }

        p{
            background-color: yellow;
        }

        div{
            color: darkgreen;
        }

        #p1{
            font-style: italic; 倾斜
        }

        .c1{
            background-color: paleturquoise;
        }
    </style>


    <!--多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔-->
    <!--后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔-->
    <!--子元素选择器,匹配所有E元素的子元素F,E>F -->
    <!--毗邻元素选择器,匹配所有紧随E元素之后的同级元素F,E + F -->
    <style>
        #p,#p1,.c6{
           color: saddlebrown;
        }
        #outer .c1 .c3{
           color: yellow;
        }
        #outer>.c1>.c3{
           font-size: 70px;
        }
        #outer+.t{
           color: red
        }
    </style>

    <!--嵌套规则:-->
    <!--块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,只能包含其它内联元素。-->
    <!--有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt-->
    <!--块级元素与块级元素并列、内联元素与内联元素并列。-->


    <!--属性选择器 可以不加E-->
    <!--E[att]匹配所有具有att属性的E元素,不考虑值。p[title] -->
    <!--E[att=val]匹配所有att属性等于“val”的E元素div[class=”error”]-->
    <!--E[att~=val]匹配所有att属性具有一个值等于“val”的E元素td[class~=”name”]-->
    <!--E[attr^=val]匹配属性值以指定值开头的每个元素div[class^="test"]-->
    <!--E[attr$=val]匹配属性值以指定值结尾的每个元素div[class$="test"] -->
    <!--E[attr*=val]匹配属性值中包含指定值的每个元素div[class*="test"]-->
        <style>

        [id]{
            color: yellow;
        }
        [al]{
            color: red
        }

       [class="div1"]{
           color: yellow;
       }

       [class~="div1"]{
           color: yellow;
       }

       [class^="d"]{
           color: yellow;
       }

       [class$="1"]{
           color: yellow;
       }

        [class*="d"]{
            background-color:yellow;
        }
    </style>


    <!--伪类选择器 : 伪类指的是标签的不同状态:-->
    <!--a:link(没有接触过的链接)a:hover(鼠标放在链接上的状态)-->
    <!--a:visited(访问过的链接)a:active(在链接上按下鼠标时的状态)-->
    <!--:before    p:before  在每个p元素之前插入内容-->
    <!--:after     p:after   在每个p元素之后插入内容-->
    <style>
        a:link{
            color: red;
        }
        a:hover{
            color: yellow;
        }
        a:visited{
            color: purple;
        }
        a:active{
            color: green;
        }
        #pk:after{
            content: "pp";
            color: green;
        }
        #pk:before{
            content: "pp";
        }
    </style>

</head>

<body>
    <p id="p"> p & id p </p>
    <div id="outer"> div & id outer
        <p id="p1"> div & id p1</p>
        <p class="c1">div & class c1</p>
        <div class="c1">
            <p class="c3">div & div & class c3</p>
        </div>
        <div class="t">
        div & div & class t
        </div>
    </div>
    <p class="t">p & class t</p>
    <p>p</p>
    <div class="c6">div & class c6</div>

    <div class="div1 div2" al="zz">div1</div>
    <p class="div1">ppp</p>
    <div class="div2">div2</div>
    <div class="div3">div3</div>
    <div id="id">iddd</div>

    <a href="http://www.baidu.com">百度</a>
    <p id="pk">hello p</p>

</body>
</html>

css优先级和继承
CSS优先级,指CSS样式在浏览器中被解析的先后顺序。样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:

  • 内联样式表的权值最高 style=" "
  • 2 统计选择符中的ID属性个数。 #id
  • 3 统计选择符中的CLASS属性个数。 .class
  • 4 统计选择符中的HTML标签名个数。 p

css属性
颜色属性 字体属性 背景属性 文本属性 边框属性 列表属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--颜色属性rgba(255,0,0,1);最后一个值代表透明度-->
    <!--字体属性font-weight;粗细-->
    <!--背景属性background-image 插入图片,默认repeat background-size是图片大小 可以直接用background设定,里面的100 100是位置-->
    <!--margin,从最左上开始显示背景,不留间隙-->
    <style>
        *{
            margin: 0;
           }

        p{
            color:rgb(269,0,0);
            color:rgba(255,0,0,0.5);
            color:#ffee33;
            color:green;

            font-weight: 100;
            font-family: "Times New Roman";
            font-style: italic;
            font-size: 45px;
        }

        #div1{
            height:300px;
            width:300px;
            background-color: rebeccapurple;
            background-image: url("12.jpg");
            background-repeat: no-repeat;
            background-size: 100px 100px;
            background-position: left center;
            background: url("12.jpg") no-repeat 100px 100px rebeccapurple;
            }
    </style>

    <!--文本属性-->
    <!--text-align字体居中line-height 设置行高 letter-spacing 字母间的像素 text-transform 标题形式-->
    <!--边框属性 word-spacing: 0px 有一段默认的距离,要想紧挨,可以设置成为负数-5px。边框风格颜色和宽度 -->
    <!--列表属性 upper-alpha 标用大写字母 decimal-leading-zero 01.02.03 circle 圈 none 无特殊符号 disc 实心点-->
    <style>
        #ss{
            background-color: #cc3399;
            text-align: center;
            line-height: 100px;
            letter-spacing: 5px;
            word-spacing: 5px;
            text-transform: capitalize;
        }
        .im{
            border: solid 3px green;
            word-spacing: 0px;
            border-style: solid;
            border-color: green;
            border-width: 2px;
        }
        ul{
            list-style:none;
        }
    </style>

</head>

<body>
    <p>pp</p>
    <div id="div1"></div>
    <p id="ss">hello p sj lf dk lks jl; ks daf</p>
    <div class="im">
          <img src="12.jpg">
          <img src="1.jpg">
    </div>

    <ul>
        <li>111</li>
        <li>111</li>
        <li>111</li>
    </ul>

</body>
</html>

dispaly属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    
    <!--display:none 不显示 block显示为块级标签inline显示内联标签inline-block行内显示块-->
    <style>
        img{
            display:none;
            display: block;
        }
        #div1{
            height: 100px;
            background-color: rebeccapurple;
            display: inline;
        }
        span{
            display: inline-block;
            height: 100px;
            width: 100px;
            background-color: red;
        }
        #outer{
            word-spacing: -5px;
        }
    </style>
</head>
<body>
    <!--<img src="12.jpg">22-->
    <!--<div id="div1">1</div>111-->

    <div id="outer">
        <span>span1</span>
        <span>span2</span>
    </div>

</body>
</html>

内边距和外边距
inline元素的margin和padding属性。水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
常见的块级元素有 div、form、table、p、pre、h1~h6、dl、ol、ul 等。
常见的内联元素有span、a、strong、em、label、input、select、textarea、img、br等

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--内边距padding(通过加宽自己达到目的)和外边距margin body有默认的边距,也可以自己设置-->
    <style>
        body{
            margin: 0px;
            padding:2px;
            border:solid green 3px;
        }
        .div1{
            border: dashed 2px black;
            height: 200px;
            width: 30%;
            background-color: rebeccapurple;
        }
        .div2{
            margin: 10px;
            border: dashed 2px black;
            height: 200px;
            width:20%;
            background-color: green;
        }
        .div3{
            border: dashed 2px black;
            height: 50px;
            width: 20%;
            background-color:red;
        }
    </style>
</head>

<body>
    <div class="div1">div1</div>
    <div class="div2">div2</div>
    <div class="div3">div3</div>
</body>
</html>

练习
300px300px的盒子装着100px100px的盒子,分别通过margin和padding设置将小盒子 移到大盒子的中间

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            margin: 0px;
        }

        .div1{
            background-color: aqua;
            width: 300px;
            height: 300px;
            border: 1px solid green;
            padding-left: 200px;
            padding-top: 200px;
        }
        .div2{
            background-color: blueviolet;
            width: 100px;
            height: 100px;
            <!--第二种方法:margin: 100px;-->
        }
    </style>
</head>
<body>
       <div class="div1">
           <div class="div2"></div>
       </div>
</body>
</html>

文档流,是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。
脱离文档流,是将元素从普通的布局排版中拿走,在定位的时候,会当做脱离文档流的元素不存在而进行定位。

只有绝对定位position(完全脱离)的absolute和fixed和浮动float(非完全脱离)才会脱离文档流。
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
当初float被设计的时候就是用来完成文本环绕的效果,所以文本不会被挡住,这是float的特性,即float是一种不彻底的脱离文档流方式。
清除浮动:clear
none : 默认值。允许两边都可以有浮动对象
left : 不允许左边有浮动对象
right : 不允许右边有浮动对象
both : 不允许有浮动对象
但是需要注意的是:clear属性只会对自身起作用,而不会影响其他元素。如果一个元素的右侧有一浮动对象,而这个元素设置了不允许右边有浮动对象,即clear:right,则这个元素会自动下移一格,达到本元素右边没有浮动对象的目的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--float:left标签 若上一个标签无float,则有float的放到到它下面,若有,则到其右后。-->
    <!--right向右飘,后面无float的顶上来-->
    <!--clear表示如果元素特定位置有浮动,则自己换到下一行-->
    <style>
        .div1{
            background: rebeccapurple;
            width: 100px;
            height: 100px;
            float: left;
        }
        .div2{
            background: green;
            width: 100px;
            height: 100px;
            float:right;
        }
        .div3{
            background: yellow;
            width: 200px;
            height: 200px;
            clear: both;
        }


        .outer{
            background-color: rebeccapurple;
            <!--overflow: hidden;-->

        }
        .menu1{
            width: 100px;
            height: 50px;
            color: gold;
            float: left;
            background-color: brown;
        }
        .menu2{
            width: 100px;
            height: 50px;
            color: gold;
            float: right;
            background-color: #C0C0C0;
        }
        .bottom{
            text-align: center;
            background-color: #cc3399;
        }

        .clear{
            clear: both;
        }
    </style>
</head>

<body>
    <!--<div class="div1">111</div>-->
    <!--<div class="div2">222</div>-->
    <!--<div class="div3">333</div>-->

    <!--div中两个div都浮起来,所以里面没东西,如果不加clear,下一个div会顶上。或者使用outer里的overflow: hidden;-->
    <div class="outer">
        <div class="menu1">菜单一</div>
        <div class="menu2">菜单二</div>
        <div class="clear"></div>
    </div>
    <div class="bottom">底部</div>

</body>
</html>

position
static 无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。
fixed对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--fixed固定位置在某个地方-->
    <style>
        .div1{
            height: 1500px;
            background-color: #cc3399;
        }

        .div2{
            height: 1500px;
            background-color: aquamarine;
        }

        a{
            position: fixed;
            bottom: 200px;
            right: 200px;
        }
    </style>
</head>

<body>
    <!--position脱离文档流,所以a标签在哪里都可以-->
    <div class="div1">
        <a>返回顶部</a>
    </div>

    <div class="div2"></div>
</body>
</html>

relative
相对定位。相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。
absolute
绝对定位。设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即html元素)。
如果父级设置了position属性为非static,那么子元素就会以父级的左上角为原始点进行定位。对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
         .div1{
            background: rebeccapurple;
            width: 100px;
            height: 100px;
         }
         .div2{
            background: green;
            width: 100px;
            height: 100px;
            position: absolute;
            top: 100px;
            left: 100px;
            <!--absolute 若body和box2没有设置position为非static,则相对于html元素定位,如果设置了则以父亲节点为原点移动-->
            <!--position: relative;-->
         }
         .div3{
            background: yellow;
            width: 200px;
            height: 200px;
         }
        .box2{
            position: absolute;
        }
    </style>
</head>
<body>
    <div class="div1">div1</div>
    <div class="box2">
        <div class="div2">div2</div>
    </div>
    <div class="div3">div3</div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值