Web前端学习3

一、CSS复合样式

一个CSS属性只控制一种样式,叫做单一样式。
一个CSS属性控制多种样式,叫做复合样式。
复合样式的写法:是通过空格的方式实现的。复合写法有的是不需要关心顺序,例如background、border……
但是,font 是字体的复合样式,需要关心顺序
1.background:red url () repeat 0 0;
2.border:1px red solid;
3.font :
注:最少要有两个值 size family(先写字体大小再写字体类型)
weight style size family
style weight size family
weight style size/line-height family
注:尽量不要混写,如果非要混写,那么一定要先写复合样式再写单一样式,这样样式才不会被覆盖掉。

    <style>
        div{width:300px;height:300px;
        background:red url(./img/dog.jpg)no-repeat center center;
    border-right:dashed 2px blue;
     font:bold italic 30px/100px 宋体;
    }
    </style>
</head>
<body>
    <div>这是一段文字</div>
</body>
</html>

二、CSS选择器

ID选择器
css : #elem{}
html : id=“elem”
注:
(1)ID是唯一值,在一个页面中,
(2)命名规范:由字母、下划线、中划线、字母(并且第一个不能是数字)
(3)驼峰写法:searchButton(小驼峰)searchButton(大驼峰)searchSmallButton
短线写法:search-small-button
下划线写法:search_small_button

部分CSS命名规则:
在这里插入图片描述
在这里插入图片描述

    <style>
        #div1{background: red;}
        #div2{background: blue;}
    </style>
</head>
<body>
    <div id="div1">这是一个块</div>
    <div id="div2">这是又一个块</div>
    <div id="xiaoming1"></div>
    <div id="xiaoming2"></div>
    <div id="searchButton"></div>
</body>
</html>

CLASS选择器(可以重复利用)
css : #.elem{}
html : class=“elem”
注:
(1)class选择器是可以复用的
(2)可以添加多个class样式
(3)多个样式的时候,样式的优先级根据CSS决定,而不是class属性中的顺序
(4)标签+类的写法
代码:

   <style>
        p.box{background: red;}
    </style>
</head>
<body>
  <div class="box">这是一个块</div>
  <div class="box">这又是一个块</div>
  <p class="box">这是一个段落</p>
</body>
</html>

三、标签群组通配等选择器

标签选择器(TAG选择器)
css : div{ } <div></div>
使用的场景:
(1)去掉某些标签的默认样式时
(2)复杂的选择器中,如层次选择器
html : <div>
群组选择器(分组选择器)
可以通过用逗号隔开的方式,给不同的选择器添加统一的css样式,来达到代码的复用
css : div、p、span{ }
通配选择器
*{ } -> div,ul,li,p,h1,h2······{}
注: 尽量避免使用通配选择器,因为会给所有的标签添加样式,慎用
使用场景: 去掉所有标签的默认样式时

<style>
        /* div{ background: red;}
        #text{ background: red;}
        .title{ background: red;} */
        /* div , #text ,.title{ background: red;} */
        *{ border: red solid;}
    </style>
</head>
<body>
    <div>这是一个块</div>
    <p id="text">这是一个段落</p>
    <h2 class="title">这是一个标题</h2>
</body>

二、层次选择器
后代 : M N{ }
父子 : M > N{ }
兄弟 : M ~ N{ } 当前M下面的所有兄弟N标签
相邻 : M + N{ } 当前M相邻的N标签

<style>
        /* #list li{ border: red solid;} */
        /* #list > li{ border: red solid;} */
        /* div ~ h2{ background: red;} */
        div + h2 { background: red;}
    </style>
</head>
<body>
    <!-- <ul id="list">
        <li>
            <ul>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </li>
        <li></li>
        <li></li>
    </ul>
    <ol>
        <li></li>
        <li></li>
        <li></li>
    </ol> -->
    <h2>这是一个标题</h2>
    <di>这是一个块</di>
    <h2>这是一个标题</h2>
    <p>这是一个段落</p>
    <h2>这是一个标题</h2>
    <h2>这是一个标题</h2>
</body>

四、属性选择器

= : 完全匹配
*= : 部分匹配
^= : 起始匹配
$= : 结束匹配
[ ][ ][ ] : 多个中括号组合匹配

<style>
        /* div[class]{ background: red;} */
        /* div[class=box]{ background: red;} */
        /* div[class*=search]{ background: red;} */
        /* div[class^=search]{ background: red;} */
        /* div[class$=search]{ background: red;} */
        div[class][id]{ background: red;}
    </style>
</head>
<body>
    <div>我好困</div>
    <div class="box" id="elem">我还困</div>
    <div class="search">我一直困</div>
    <div class="search-button">睡不醒</div>
    <div class="button-search">我只想睡觉</div>
</body>

五、hover等伪类选择器

伪类选择器
M:伪类{ }
CSS伪类用于向某些元素添加特殊效果。一般用于初始样式添加不上的时候,用伪类来添加。
(1):link 访问前的样式(只能添加a标签)
(2):visited 访问后的样式 (只能添加a标签)
(3):hover 鼠标移入时的样式(可以添加给所有的标签)
(4):active 鼠标按下时的样式(可以添加给所有的标签)
注:
(1)link visited 只能给a标签加,hover和active可以给所有标签加。
(2)如果四个伪类都失效,一定要注意顺序 : L V H A。
(3)一般网站只这样去设置 : a{ } a:hover{ }。

 <style>
        /* div{ width: 200px; height: 200px; background: red;}
        div:hover{ background: blue;}
        div:active{ background: green;} */
        /* a:link { color:red;}
        a:visited{ color:blue;}
        a:hover{ color:green;}
        a:active{ color:yellow;} */
        a{ color:gray;}
        a:hover{ color: red;}
    </style>
</head>
<body>
    <a href="#">这是一个链接</a>
</body>

六、after等伪类选择器

:after、:before 通过伪类的方式给元素添加一些文本内容,使用content属性
:checked、:disabled、:focus都是针对表单元素的

<style>
    /* div::after{ content:"Word";} */
    /* div:before{ content:"Word"; color: red;} */
    /* :checked{ width: 100px; height: 100px;} */
    :disabled{ width: 100px; height: 100px;}
    :focus{ background: red;}
    </style>
</head>
<body>
    <input type="checkbox">
    <input type="checkbox" checked>
    <input type="checkbox" disabled>
    <input type="text">
</body>

七、结构伪类选择器

(1):nth-of-type()、:nth-child()
角标是从1开始的,1表示第一项,2表示第二项 | n值 表示从0到无穷大
(2):first-of-type、:first-child
(3):last-of-type、:last-child
(4):only-of-type、:only-child
nth-of-type()和nth-child()之间的区别
type : 类型
child : 孩子

<style>
        /* li:nth-of-type(n){ background: red;} */
        /* li:nth-of-type(2n){ background: blue;}
        li:nth-of-type(2n+1){ background: red;} */
        /* li:first-of-type{ background: red;}
        li:last-of-type{ background: blue;} */
        /* li:only-of-type{ background: red;} */
        /* li:nth-of-type(2){ background: red;} */
        /* div:nth-child(2){ background: red;} */
        /* li:nth-child(3){ background: red;} */
        /* li:nth-of-type(3){ background:red;} */
        div:only-of-type{ background: red;}
    </style>
</head>
<body>
    <ul>
        <li></li>
        <div>我只想睡觉</div>
        <li></li>
        <li></li>
        <li></li>
        <li></li>

八、css样式的继承

文字相关的样式可以被继承
布局相关的样式不能被继承(默认是不能继承的,但是可以设置继承属性)
注 : inherit值

<style>
        div{ width:300px; height: 300px; border: 1px red solid;
             color: red; font-size: 30px;}
        p{ border:inherit;}
    </style>
</head>
<body>
    <div>
        <p>这是一个段落</p>
    </div>
</body>

十、CSS优先级

(1)相同样式优先级:
当设置相同样式时,后面的优先级较高,但不建议出现重复设置样式的情况。

(2)内部样式与外部样式:
内部样式与外部样式优先级相同,如果都设置了相同样式,那么后写的引入方式优先级高。

(3)单一样式优先级:
style行间 > id > class > tag > * > 继承
注:
style行间 权重 1000
id 权重 100
class 权重 10
tag 权重 1

<!-- <style>
        div{ color:red;}
        div{ color:blue;}
    </style>
    <link rel="stylesheet" href="./base.css"> -->
    <style>
        /* #elem{ color:red;} */
        /* .box{ color: blue;} */
        /* div{ color:green;} */
        /* *{ color:red;} */
        body{ color:blue;}
    </style>
    </head>
<body>
    <!-- <div id="elem" style="color:blue;">这是一个块</div> -->
    <div id="elem" class="box">这是一个块</div>
</body>

十一、important优先级

important
提升样式优先级,非规范方式,不建议使用。(不能针对继承属性进行优先级的提升)
标签+类与单类

群组优先级
群组选择器与单一选择器的优先级相同,靠后写的优先级高。
标签+类 > 单类

style>
        /* #elem{ color:red !important;}
        *{ color:green;} */
        /* #elem{ color:red ;}
        *{ color:green !important;} */
        /* #elem{ color:red ;}
        *{ color:green ;}
        body{ color:gray !important;} */
        /* .box{ color:red;}
        div.box{ color:blue;} */
        /* div.box{ color:blue;}
        .box{ color:red;} */
        /* div,p{ color:red;}
        div{ color:blue;}*/
        div{ color:blue;}
        div,p{ color:red;}
    </style>
</head>
<body>
    <!-- <div id="elem" style="color:blue;">这是一个块</div> -->
    <div class="box">这是一个块</div>
    <p>这是一个段落</p>
</body>

十二、层次优先级

(1)权重比较
ul li .box p input{} 1+1+10+1+1
.hello span #elem{} 10+1+100

(2)约分比较
ul li. box p input{}
. hello span#elem{}

改完后

li p input{}
#elem{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值