CSS基础及用法

前言

对于一个网页来说,css是网页的门面,对于一个前端初学者来说,css更是他们必经之路,通过这篇文章我就来带大家好好认识一下css吧!

拓展

在学习css之前,我们首先要清楚页面元素。

1).页面元素分类:
(1).块元素(用于搭建页面结构)

特点:默认宽100%父,高包裹内容,独占一行。
例如:div(无意义的块元素,不知道使用哪个块元素的时候使用)
html、body、head、h1~h6、p、ul(无序,…)、ol(有序,123) 、li、dl>dt(dl为自定义列表,
dt为标题,dd为列表项(看起来是这样…,其实两者没有区别,可以通过css
把dd的内边距去掉即与dt相同))、dl>dd、H5新增的语义化标签(与div相比,
div没有语义,而语义化标签能方便阅读理解):content、header、article…

(2).行内元素(用于内容填充)

特点:不能通过css为其指定宽高。宽高由自身来决定。与其他行内元素共享一行空间。
例如: span、a(超链接 href 相对地址 当前目录: . 上级目录:…)、H5过期的语义化标签(依旧能
使用):i(斜体样式)、em(强调)、strong(加粗)、video、audio、img

(3).功能元素(不能搭建网页)

table:表格,用于展现列表数据,层次结构,自动换行。
form:收集用户数据,与后端交互
iframe:将一个页面嵌入当前页面中。

正文

1.定义

css又称作重叠样式表,它主要用于对网页中的元素进行精准控制及修改,实现对网页内对象的编辑和处理。

2.语法

(1).引入

1).将css规则直接写在style中 (耦合性太高,不好,现在多追求高内聚,低耦合)

<div style="background-color: blue;"></div> <!--直接写在标签中,效果为块元素的背景色为蓝色-->       

2).将样式嵌入到style标签中 (样式和html还是没有分开,当样式过多,就会复杂起来)

<head>
 <style>
 	div{
            background-color: blue;
        }
 </style>
 </head>
 
 <body>
    <div>--将css规则直接写在style中,效果为所有div元素的背景色为蓝色--</div>
 </body>

3).将样式写在.css文件中,再通过link引入
link.css文件:

div{
    background-color: blue;
}

html文件:

<link rel="stylesheet" href="link.css">   <!--外链引入-->
(2).语法组成

选择器:
{
属性:值;

属性:值;
}

(3).选择器
1).核心选择器

__类选择器:.类名{} __
注:不同的html元素class值可以重复,即一个类选择器可以被重复使用

<head>
<style>
.uls
        {
            
            background-color: burlywood;
        }
</style>
</head>
<body>
<p class="uls"></p>        
<div class="uls"></div>
</body>

__标签选择器(元素选择器): 标签名{} __
注:所有的该标签都会被选择,范围太大,不具体. 如div{}、p{}等等

<head>
<style>
div
        {
            
            background-color: burlywood;
        }
</style>
</head>
<body>
<div>1</div>      
<div>2</div>
</body>

id选择器(优先级高于类选择器):#id{}
注:一个id选择器只能被使用一次

<head>
<style>
#box
        {
            
            background-color: burlywood;
        }
</style>
</head>
<body>
<div id="box">1</div>      
</body>

__组合选择器:div,p{} __
注:所有的div标签和p标签都被选择了

<head>
<style>
div,p
        {
            
            background-color: burlywood;
        }
</style>
</head>
<body>
<p>1</p>      
<div>2</div>
<p>3</p>
</body>

__并且选择器:div.box{} __
注:标签为div且class为box

<head>
<style>
div.box
        {
            
            background-color: burlywood;
        }
</style>
</head>
<body>
<div class="box">1</div>      
<div>2</div>
</body>

__普遍选择器: *{} __
注:页面中所有的标签都选上

补充:关于css的命名规则,大家可以去下面的链接学习
命名规则

2).层次选择器

父子选择器:用于找到子元素,满足条件的子元素都会被选择,并不是找到第一个以后就停止不找了。

格式:父 > 子
例:ul>li{} 、 .var>li{} 、 .var>#ls{} .var> *{}

后代选择器:用于找到后代元素,父子选择器里面只找到儿子就行了,后代选择器则是满足条件的儿子的儿子…的 儿子也会找到
格式:父 后代 //中间是空格
例:ul li{} //多重嵌套的li也能找到

<ul>
        <li class="first">
            <ul>
                <li></li>
                <li></li>
            </ul>
        </li>
        <li class="second">
        </li>
    </ul>
    
    <!-- 对于父子选择器 ul>li: 他只能找到类名为first和second的li
         而对于后代选择器ul li,他还能找到类名为first的li下面的所有li-->

下一个兄弟选择器(直接兄弟选择器): 兄弟就是跟他有同一父元素的元素

格式:p + *{} //不管p后面是什么都会选择
p + a{} //如果下一个是a标签,会选择,否则不会选择
注:只会看他的下一个兄弟,不管他是否满足条件都不会继续向后寻找

之后所有兄弟选择器
p ~ *{} //选择p后面所有的兄弟

3).伪类选择器

含义:过滤器,在已经选择到的元素上再进一步筛选
格式(列举的为常用的):
1.锚伪类选择器
元素:状态{} //当元素的状态改变为设置的状态时,进行{}里面的操作。

   a:link {color:blue;} //未访问时该链接的字体颜色为blue
   a:active{color:#99999;}//鼠标点击时该链接的字体颜色为#999999
   a:hover{color:#666666;}//鼠标停留在该链接时的字体颜色为#666666
   a:visited{color:#333333;}//该链接被访问时的字体颜色为#333333

2.nth选择器

     ul > li:first-child {} //选择ul下的第一个li
     ul> li:nth-child(3) {} //选择第三个li
    ul> li:nth-child(2n+1) {} //n从0开始每次加1,有几个li则n最大为几。 如果有四个li,则会选择第1,3个li
4).伪元素选择器【过滤器】

格式:元素::位置{}
例:
div::first-letter{} //选中元素的第一个字;
div::first-line{} //选中元素第一行;
div::selection{} //选中被选择的文本元素
div::before{content:“hello”} //在元素的首位添加内容 hello
div::after{content:“world”} //在元素内的末尾添加内容,常用于在内部元素浮动后导致块元素高度为0的问题,这个会在后面讲到。

<head>
    <style>
        div.box::first-letter{
            font-size: 20px;
            color: blue;
        } 
        div.box::first-line{
            font-size: 20px;
        } 
        div.box::selection{
            color: red;
        } 
        div::before{
            content:"hello"
        } 
        div::after{
            content:"world"
        }
    </style>
</head>
<body>
    <div class="box">伪元素的使用</div>
</body>

效果:
鼠标选中了“的使用”

5).属性选择器【过滤器】(主要用于表单)
        ul>li[class = ls]{} //选择ul下的li中类为ls的li元素 
	           name*=e,包含e 
	           name^=e 以e开头
	           name$=e,以e结尾 
        等等很多种筛选方式。                

3.选择器的优先级

解释:有时候,我们写了几个不同的选择器,但是他们都对同一标签的一个属性进行了赋值,这时就涉及到了优先级的问题,谁的优先级大听谁的。

例如:

<head>
    <style>
        div.box{
            color: blue;
        }
        div{
            color: red;
        }
    </style>
</head>
<body>
    <div class="box">优先级</div>
</body

效果:
在这里插入图片描述

优先级比较方式:
(1) 特权

!important //例如: color: #333 !important ;
注:当一个属性被赋予特权后,相当于优先级达到最高

(2) 权值

style属性(直接写在标签里的) 1000
#id 100
class、伪类选择器 10
标签选择器 1

在上面的例子中,div.box选择器的优先级:1+10=11,div选择器的优先级:1,所以color的属性值有div.box选择器决定

注:如果一样大,则后者覆盖前者

4.单位

1).绝对单位
    px
2.)相对单位

em, em是相对于当前元素的字体大小 .3em 表示 0.3个em
rem,rem相对于html元素的字体大小

<head>
    <style>
        html{
            font-size: 20px;
        }
        div{
            color: #ffffff;
            background-color: crimson;
            margin-bottom: 1px;
            padding: 1em;  /* 内边距的距离为1字体大小 box1为10px box2为20px,box3为10px */
        }
        .box1{
            font-size: 10px;
        }
        .box2{
            font-size: 20px;
        }
        .box3{
            font-size: 10px;
            /* .box3优先级大于div选择器,内边距改为 html中的1字体单位 20px */
            padding: 1rem;   
        }
    </style>
</head>
<body>
    <div class="box1">hello</div>
    <div class="box2">hello</div>
    <div class="box3">hello</div>
</body>

5.用法规则

针对于块元素内部的元素,具有可继承性,即给块元素施加规则以后,他的后代元素都能继承这个规则

1).文本规则

用途

1).居中
text-align:conter; //使块元素的内容居中
vertical-align:middle(垂直居中); //调整行内元素或者表格单元格的垂直对齐方式
line-align:xpx  //通过指定行高使得内容垂直居中
2).修饰文本
overflow:hidden; //隐藏溢出的内容
visible(默认) ; //显示溢出的内容
scroll; //溢出的内容通过滚动条可以访问
overflow-x、overflow-y:分别在x和y轴上   隐藏内容
text-decoration: //文本装饰         none 文本装饰为空   
text-decoration-line://线的内容    line-through 将一条线覆盖在字体中间
text-decoration-style://线的类型  solid 实线
text-indent: xem //首段x个像素缩进
text-transform:  //大小写转换
<head>
    <style>
        span.span1{
            background-color: blanchedalmond;
        }

        /* overflow 对溢出的内容进行处理 */
        .overflow{
            width: 200px;
            height: 100px;
            border: 1px solid #333333;
            overflow: scroll;
        }
        .overflowson{
            width: 600px;
            height: 400px;
           
            background-color: crimson;
        }
    </style>
</head>
<body>
    <!-- 内容居中 -->
    <div style="text-align: center;">
    <span class="span1"> 123</span>
    </div>
    <!-- 文本垂直居中 -->
    
    <div  style="line-height: 53px; background-color: blue; ">
    <span>234</span>
    </div>
    <div class="overflow">
        <div class="overflowson">
            <span></span>
        </div>
    
    <!--文本装饰 -->
    <div>
    <a href="" style="text-decoration-line: line-through; ">文本装饰</a>
    </div>
</body>

2).字体规则

用途:对盒子内容进行修饰

font-family: //字体样式
font: font-size/line-height font-family;
 例: 12px/1.5 (字体为12px,行高为字体的1.5倍) , '微软雅黑'...;
font-weight(加粗):normal/bold;     //可以写数字(100-900)或者bold,一般用bold
font-style(是否斜体):normal/italic;
color://字体颜色

速写形式

font:normal normal 12px/1.5 "微软雅黑" //font-style、font-weight、font-size、line-height、font-family //前两个可以缺省,即不写

3).实体规则

&nbsp; //表示空格
&lt;   //表示<
&gt;   //表示>

4).背景规则

background(速写形式):url()  
background-color:
background-image:url();
                 linear-gradient(Green,Yellow); //渐变色
                 radial-gradient(Green,Yellow); //镜像
background-position(背景图片的位置)
background-repeat:norepeat(背景图片不重复)
background-size(指定背景图片的大小,为了不变形,一般等比例):auto(图片原来的大小)、contain
background-clip(裁切):padding-box(边框的不要,从内容开始裁)
background-origin(铺的起点) border-box(从边框开始) content-box(从内容区开始铺)

5).动画、过渡、变形

1)动画:通过设置关键帧使得页面变化
<head>
    <style>
        html,body{
            padding: 0px;
            margin: 0px;
        }
        div.container{
            height: 1000px;
        }
        div.box{
            width: 100px;
            height: 100px;
            background-color: blue;
            border-radius: 50%; 
            position: absolute;

            /* 使用动画 */

            /* 指定使用的动画的名字 */
            animation-name: move;

            /* 运动的时间,可以是毫秒或秒 */
            animation-duration: 3s;

            /* 运动曲线 */
            animation-timing-function: linear;   /*匀速*/
            /* 运行按步数执行 */
            animation-timing-function: steps(4);

            /* 动画循环的方式 */
            animation-direction: alternate; /*来回运行*/
            
            /* 动画执行次数 */
            animation-iteration-count: 3;
            /* animation-iteration-count: infinite;  永远 */

            /* 动画运行完成后的状态 */
            animation-fill-mode: forwards;  /*最后一帧前的状态*/
            /* animation-fill-mode: backwards; 最后一帧后的状态 */
            
            /* 开始的延迟 */
            animation-delay: 1s;
        }
        .box:hover{
            /* 动画的状态 */
            animation-play-state: paused;
        }
        /* 定义关键帧 */
        @keyframes move {
            from{
                margin-left: 300px;
                
            }to{
                margin-left: 1000px;
                margin-top: 300px;
            }
        } 
    </style>
</head>
<body>
    <div class="container">
        <div class="box"></div>
    </div>
</body>
2)过渡(从一种状态到另一种状态)
    1.更加简单的动画,没有动画帧
    2.需要触发:如:hover   
        transition:all 2s delay timing(速写形式)  后两个可以省略

        /* 需要过渡的属性 */
        transition-property: all;
        /* 变化时长 */
        transition-duration: 2s;
        /* 变化方式 */
        transition-timing-function: linear;
        /* 延迟时间 */
        transition-delay:0s
3)变形(一般要与过渡或者动画一起使用,不然就是瞬间变化)
    transform-origin: 10px 20px //指定元素变形的点
    transform-scale(2) //放大的倍数(宽和高都放大两倍)
    transform-rotate(45deg) //旋转45°
    transform-skewX(45deg) //对X方向不变,沿着Y方向旋转45度,(即逆时针旋转45°)
    transform-translateX(200px) //沿着x轴平移200px

例:(过渡加变形)

<head>
    <style>
        div{
            margin: 0px;
            border: 5px solid #cccccc;
            border-radius: 50%; 
        }
        div.outer{
            margin-left: 500px;
            margin-top: 100px;
            box-sizing: border-box;
            width: 200px;
            height: 200px;
            padding: 20px;
            
            /* 发生变化的属性 */
            transition-property: all;
            /* 变化时长 */
            transition-duration: 2s;
            /* 变化方式 */
            transition-timing-function: linear;   
        }
        div.outer>div.inter{
            box-sizing: border-box;
            height: 100%;
        }
        div.outer:hover{
            background-image: url(图片的地址);
            transform: rotate(360deg);
            padding: 40px;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="inter"></div>
    </div>
</body>

5).其他规则

display:inline-block; //变为行内块元素,有行和块的特点 即不独占一行且可以指定宽高
        bolck; //使该元素变为块元素
        inline;//使该元素变为行内元素       
opacity:.3//透明度 0-1

列表样式:list-style:none;
表格样式: border-collapse:collapse; //当td添加边框,加在table上,可以合并隔壁的边框

总结

关于css的规则还有很多很多…,本人目前水平有限,见谅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值