CSS


CSS

CSS是Cascading Style Sheets(层叠样式表)的简称,是负责美化页面的

CSS基础语法

选择器 { 
    属性1:1; 
    属性2:2; 
    ... 
    属性N: 值N;
}

选择器就是用来选择需要美化的html标签。

html中属性的格式是: 属性=”属性值”

css中属性的格式是: 属性: 值;

CSS引入

  • 方式一:行内式

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>css引入_行内式</title>
        </head>
        
        <!--
    多个样式之间以分号“ ; ”隔开
        字体大小样式:font-size:100px
        字体颜色样式:color:red
        -->
        <!--
        行内式:在标签的内部 通过添加style样式来进行修理
        优点:方便,针对要处理的内容,可以直观的看到结果
        缺点:复用性太差,在需要添加样式的地方都要添加样式,代码重复
        -->
        <body>
            <!-- 
              css行内式: 就是使用标签的style属性添加样式
              优点:编写方便
              缺点:样式只能作用在当前单个标签,多个标签不能共享该样式
             -->
            <span style="color: red;">段落1</span>
            <span style="color: red;">段落2</span>
        </body>
    </html>
    
  • 方式二:嵌入式

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>css引入_嵌入式</title>
            <!-- 
                嵌入式通过在head标签中添加style标签,在style标签
                内部编写css代码
                type="text/css"  text是大的类型  css是小的类型  -- MIME类型
             -->
                <!--
                  嵌入式:
                  优点:同一个页面中的标签可以共享样式
                  缺点:同一个项目的不同页面不能共享样式
                -->
            <style type="text/css">
                /*
                选择器:
                    标签选择器,使用标签的名称
                    按照css的语法,设置样式
                    
                    作用:针对当前文档中的所有符合标签名称的标签内容,按照设置的样式进行展示
                */
                span{
                    color: red;
                }
                
            </style>
        </head>
        <body>
            <p>段落1</p>
            <p>段落2</p>
        </body>
    </html>
    
  • 方式三:外链式

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>css引入_外链式</title>
            <!-- 
             外链式:也就说css和html不在同一个页面,css从html中独立出去成为一个css文件
             然后在html中引入css文件
             
             外链式:
             优点:复用性强,css和html解耦了,所以css可以被多个html页面共享
             缺点:可读性差,样式覆盖性问题,使用的样式采用的是就近原则
             -->
             <!-- 
                通过link标签引入外部css文件
                rel="stylesheet"   rel属性表示关联的是样式表
                type : 是类型,关联样式表的类型
                href : 属性就是样式文件的路径
              -->
             <link rel="stylesheet" type="text/css" href="css/base.css"/>
        </head>
        <body>
            <p>段落1</p>
            <p>段落2</p>
        </body>
    </html>
    

样式的优先级

多重样式:如果外部样式、内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况。

样式优先级总结:谁离得近,谁优先级高!行内样式优先级最高!

CSS选择器

基础选择器

标签选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>标签选择器</title>
        <style type="text/css">
            /* 
               标签选择器的语法格式:
                标签名{
                    属性:值;
                }
             */
            /* 
            标签选择器的短板,只能给符合标签名称的所有标签设置样式
            比如:给相同标签中的部分标签设置样式,是做不到的
              以下选择器表示选中当前页面中的所有div标签
             */
            div{
                width: 100px;
                height: 100px;
                background-color: skyblue;
            }
        </style>
    </head>
    <body>
        <div>
            div01
        </div>
        <hr >
        <div>
            div02
        </div>
    </body>
</html>

类选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>类选择器</title>
        <!-- 
            类选择器的语法格式:
            .类名{
                属性:值;
            }
            注意:类名是通过标签的class属性设置的.
            相同的类名可以用在多个标签上
            一个标签可以有多个类名

            class属性:叫做了类选择器,可以有多个类名
            
         -->
         <style type="text/css">
         	.c1{
                width: 100px;
                height: 100px;
                background-color: skyblue;
            }
            
            .c2{
                width: 200px;
                height: 200px;
                background-color: red;
            }
            
            .c{
                /* color属性表示文字的颜色 */
                color: white;
            }
                
         </style>
    </head>
    <body>
        <!-- 一个标签可以有多个类名,类名之间使用空格分开 -->
        <div class="c1 c">
            div01
        </div>
        <hr >
        <div class="c2 c">
            div02
        </div>
        <hr >
        <div class="c1 c">
            div03
        </div>
    </body>
</html>

id选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>id选择器</title>
        <style type="text/css">
            /* 
             id选择器语法格式:
              #id号{
                  属性:值;
              }
              注意:id号是通过标签的id属性设置的.
              规范要求:每个标签的id号唯一,在当前文档中每个id名只能有一个。因为id主要是为了配合js代码。
                注意:id选择器是以#号开头
            id选择器很少被使用
             */
            #p1{
                color: red;
            }
        </style>
    </head>
    <body>
        <p>段落1</p>
        <p id="p1">段落2</p>
        <p>段落3</p>
        
    </body>
</html>

通配符选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>通配符选择器</title>
        <!-- 
            通配符选择器的语法格式:
             *{
                属性:值;
             }
            *表示选中body页面中的所有标签 
         -->
         <style type="text/css">
         	*{
                color: red;
            }
         </style>
    </head>
    <body>
        <p>段落1</p>
        <p>段落2</p>
        <span>span</span>
        <br>
        <b>我爱你祖国</b>
    </body>
</html>

基础选择器的优先级

不同选择器的相同样式作用在同一个标签上才需要区分优先级。

范围越小优先级越高

!important > 行内式 > id选择器 > 类选择器 > 标签选择器 > 通配符选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>基础选择器的优先级</title>
        <style type="text/css">
            p{
                /* 
                  !important 用来提升优先级
                 */
                color: red !important;
            }
            #p1{
                color: blue;
            }
            .c1{
                color: green;
            }
        </style>
    </head>
    <body>
        <p id="p1" class="c1" style="color: yellow">段落1</p>
    </body>
</html>

复合选择器

复合选择器就是多个基础选择器组成的选择器

后代选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>后代选择器</title>
        <style type="text/css">
            /* 
              后代选择器语法格式:
               选择器1 选择器n{
                   属性:值;
               }
               后代:子子孙孙
            
             */
            .c1 span{
                color: red;
            }
        </style>
    </head>
    <body>
        <div class="c1">
            <p>
                <span>
                    内容1
                </span>
            </p>
            <span>
                内容2
            </span>
            <br>
            <b>粗体</b>
        </div>
    </body>
</html>

子代选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>子代选择器</title>
        <style type="text/css">
            /* 
               子代选择器语法格式:
                选择器1>选择器n{
               		属性:值;
                }
                子代:亲儿子
             */
            div>span{
                color: blue;
            }
        </style>
    </head>
    <body>
        <div class="c1">
            <p>
                <span>
                    内容1
                </span>
            </p>
            <span>
                内容2
            </span>
            <br>
            <b>粗体</b>
        </div>
        
    </body>
</html>

相邻兄弟选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>相邻兄弟选择器</title>
        <style type="text/css">
            /* 
              相邻兄弟选择器的语法格式:
                选择器1+选择器n{
                    属性:值;
                }
                相邻兄弟选择器必须是紧挨着的,且只能向下查找
             */
            div+p{
                color: red;
            }
        </style>
    </head>
    <body>
        <p>段落0</p>
        <div>
            
        </div>
        <p>段落1</p>
        <p>段落2</p>
        <span>span</span>
    </body>
</html>

通用兄弟选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>通用兄弟选择器</title>
        <style type="text/css">
            /* 
             通用兄弟选择器语法格式:
               选择器1~选择器n{
              	  属性:值;
                }
                
              通用兄弟选择器只要是指定的兄弟标签即可
              div~* 表示div下的所有兄弟,不过很少这样使用
             */
            div~p{
                color: red;
            }
        </style>
    </head>
    <body>
        <p>段落0</p>
        <div>
            
        </div>
        <p>段落1</p>
        <p>段落2</p>
        <span>span</span>
    </body>
</html>

交集选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>交集选择器</title>
        <style type="text/css">
            /* 
             交集选择器语法格式:
              选择器1选择器n{
                  属性:值;
              }
              注意:标签选择器只能位于最前面
             */
            /* 
            理解:获取同时满足有几个选择器的标签中的内容
              p.c1表示选择p标签且类名是c1的
             */
            p.c1{
                color: red;
            }
        </style>
    </head>
    <body>
        <p class="c1">段落1</p>
        <p>段落2</p>
        <p>段落3</p>
        <span class="c1">span</span>
    </body>
</html>

并集选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>并集选择器</title>
        <style type="text/css">
            /* 
             并集选择器语法格式:
              选择器1,选择器n{
                  属性:值;
              }
            
            理解:获取满足随便一个选择器的标签的内容
             */
            .c1,b,i,span{
                color: red;
            }
        </style>
    </head>
    <body>
        <p class="c1">段落1</p>
        <b>段落2</b>
        <i>段落3</i>
        <span>span</span>
    </body>
</html>

复合选择器的优先级

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>复合选择器的优先级</title>
        <style type="text/css">
            /* 
               复合选择器的优先级需要根据基础选择器的优先级来判断
               id选择器 > 类选择器 > 标签选择器
                100          10        1             ---- 虚拟的优先级权重
                复合选择器的虚拟的优先级权重累加,结果最大的优先级最高;
                如果累加的结果一样,就按照就近原则
             */
            div p span{
                color: red;
            }
            #d1>.c2>span{
                color: blue;
            }
            #d1>#p1>#s1{
                color: green;
            } 
            .c1>#p1>.c3{
                color: deeppink;
            }
            #d1>.c2>.c3{
                color: yellow;
            }
        </style>
    </head>
    <body>
        <div id="d1" class="c1">
            <p id="p1" class="c2">
                <span id="s1" class="c3">
                    内容1
                </span>
            </p>
            
        </div>
    </body>
</html>

属性选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>属性选择器</title>
        <style type="text/css">
            /* 
               属性选择器的语法格式:
               格式一:
                [属性名]{
                    属性:值;
                }
            */
                [type]{
                    border: 2px solid blue;
                }
             /*
               格式二:
                [属性名="值"]{
                    属性:值;
                }
             */
             [type="text"]{
                 border: 2px solid blue;
              }
            
        </style>
    </head>
    <body>
        <form action="#" method="get">
            账号:
            <input type="text" name="username"/>
            <br>
            <br>
            密码:
            <input type="password" name="username"/>
        </form>
    </body>
</html>

伪类选择器

伪类通过冒号来定义,它定义了元素的状态,伪类不是我们自己定义的类,而是css值已经定义好的类.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>伪类选择器</title>
        <style type="text/css">
            /* 
              :link 表示默认的状态
             */
            a:link{
                color: red;
            }
            /* 
             :visited 表示被访问后的状态
             */
            a:visited{
                color: green;
            }
            
            /* 
              :visited 表示鼠标停留在上面的状态
             */
            a:hover{
                color: blue;
            }
        
            /* 
              :active 表示鼠标点击按下的状态
             */
            a:active{
                color: black;
            }
        </style>
    </head>
    <body>
        <a href="http://www.baidu.com">百度</a>
    </body>
</html>

背景属性

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>背景属性</title>
        <style type="text/css">
            body{
                background-color: skyblue;
                /* 背景图片会覆盖背景色 */
                background-image: url(image/bg.png);
                /* 
                   是否重复
                   repeat 表示重复,就是平铺 -- 默认
                   no-repeat 表示不重复,就是不平铺
                 */
                background-repeat: repeat;
            }
        </style>
    </head>
    <body>
    </body>
</html>

文字属性

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>字体属性</title>
        <style type="text/css">
            /*  
               所有的颜色都是由三原色组成
               三原色: 红-red,绿-green,蓝-blue
               css的中颜色可以使用英文、十进制、十六进制表示
               英文: red   green  skyblue pink
               十六进制: 
                 - 三位表示法:#000-#fff
                    000 黑色  fff 白色
                    f00 红色  0f0 绿色  00f 蓝色
                 - 六位表示法: #000000-#ffffff
                    ff0000 红色
                    ffff00 黄色
                    
                十进制:
                    0-255
                    RGB(255,0,0)
                    RGBA(255,0,0,)
                    A:alpha通道  表示透明度  0-1
                    0表示透明,内容看不到     1表示不透明,内容看得到
             */
            span{
                /* 
                   文字的颜色
                 */
                color: red;
                /* 
                   文字的大小
                 */
                font-size: 20px;
                /* 
                   文字的样式
                   normal: 正常
                   italic: 斜体
                 */
                font-style: italic;
                /* 
                   文字的权重:加粗
                 */
                font-weight: bold;
                /* 
                   文字的字体
                   如果属性值中有特殊符号,属性值需要使用""引起来
                 */
                font-family: 华文彩云;
            }
            
            p{
                color: blue;
                /* 
                font的简写注意点:
                   font简写必须包含font-size和font-family,必须是font-size font-family的
                    顺序且必须在最后
                    font-style和font-weight在前面,两者之间没有顺序要求
                 */
                font:bold italic 20px 华文彩云 ;
            }
        </style>
    </head>
    <body>
        <span>好好学习,天天向上</span>
        <br>
        <p>好好学习</p>
    </body>
</html>

文本属性

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>文本属性</title>
        <style type="text/css">
    
            div {
                width: 300px;
                height: 300px;
                background-color: skyblue;
                /* 
                  文本装饰:
                  none  什么装饰都没有,如果是a标签就会取消默认的下划线
                  underline 下划线
                  line-through  删除线
                  overline 顶格线
                 */
                text-decoration: underline;
                /* 
                   文本水平对齐方式
                 */
                text-align: center;
                /* 
                   行高: 从文字的中央基线向上和向下延伸的距离
                   将行高设置成父容器的高度就可以做到单行文本的垂直居中
                 */
                line-height: 300px;
                /* 
                 设置字与字之间,字母和字母之间的间距。
                 */
                letter-spacing: 10px;
            }
            
            p{
                /* 
                   文本缩进 
                   2em 表示2个文字的大小
                 */
                text-indent: 2em;
                /* 
                 opacity用来设置透明度,默认值为1,1为不透明,0为完全透明。
                 隐藏一个元素 ,完全不显示,但是会占空间,只是看不到。
                 */
                opacity: 0;
            }
        </style>
    </head>
    <body>
        <div>
            <span>
                好好学习,good
            </span>
        </div>
        <p>浙江品诺机械有限公司车间里热火朝天,电机声隆隆,每台设备上装着传感器,通过5G技术联上“轴承产业大脑”,设备状况、产品产量及质量等数据在LED显示屏上一目了然。经过数字化改造后,该车间产出效率提升8%,自动采集的数据上传汇总还能让管理事半功倍。</p>
    </body>
</html>

扩展

实现溢出文本eclipsis的解决,让溢出的文字以省略号显示。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>实现溢出文本eclipsis的解决</title>
        <style type="text/css">
            div{
                width: 5em;
                background-color: skyblue;
                /*设置文本不能换行*/
                white-space:nowrap;
                /*设置文本超出文本框时隐藏文本*/
                overflow:hidden;
                /*用略符号来代表被修剪的文本*/
                text-overflow:ellipsis;
            }
        </style>
    </head>
    <body>
        <div>
            好好学习,天天向上
        </div>
    </body>
</html>

边框线

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>边框线</title>
        <style type="text/css">
            div{
                width: 100px;
                height: 100px;
                background-color: red;
                border: 3px solid blue;
                /* 半径是宽高的一半,就是圆 */
                border-radius: 50px;
                /* border-bottom-width: 3px;
                border-bottom-color: #0000FF;
                border-bottom-style: solid; */
            }
        </style>
    </head>
    <body>
        <div>
            
        </div>
    </body>
</html>

列表属性

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>列表属性</title>
        <style type="text/css">
            ul{
                /* 设置列表编号类型 */
                /* list-style-type: circle; */
                /* 
                   取消列表的编号
                 */
                list-style: none;
            }
        </style>
    </head>
    <body>
        <ul>
            <li>aaa</li>
            <li>bbb</li>
            <li>ccc</li>
        </ul>
    </body>
</html>

元素的分类

html元素分为行内元素、块级元素、行内块元素

行内元素

  • 不能设置宽高,宽高是包裹内容的
  • 一行可以显示多个行内元素
  • 常见的行内元素:span、a,em,strong, i, u, del

块级元素

  • 可以设置宽高。宽度默认独占一行,高度默认包裹内容
  • 一行只能显示一个元素
  • 常见的块级元素:div, body,p,h1~h6,ul,ol,li,pre

行内块元素

  • 可以设置宽高
  • 一行可以显示多个行内块元素
  • 常见的行内块元素: img、input

元素类型的转换

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>元素的分类</title>
        <style type="text/css">
            #s1{
                width: 100px;
                height: 100px;
                background-color: red;
                /* 转成块级元素 */
                display: block;
            }
            #s2{
                background-color: skyblue;
            }
            .c1{
                width: 300px;
                height: 300px;
                background-color: pink;
                /* 转换成行内元素 */
                /* display: inline; */
                /* 
                转换成行内块元素,
                一行可以显示多个,元素之间默认有间距
                 */
                display: inline-block;
            }
            .c2{
                width: 300px;
                height: 300px;
                background-color: peru;
                display: inline-block;
            }
        </style>
    </head>
    <body>
        <span id="s1">内容1</span>
        <span id="s2">内容1</span>
        <br>
        <div class="c1">
            div1
        </div>
        <div class="c2">
            div1
        </div>
    </body>
</html>

盒子模型

盒子模型不是html中的一个元素,也不是css的一个样式,而是对css中一组属性的形象化描述。

宽高、边框线、内边距、外边距就是盒子模型的形象化描述

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>盒子模型</title>
        <style type="text/css">
            .c1{
                /* 
                   盒子内容的宽高 
                 */
                width: 96px;
                height: 96px;
                background-color: salmon;
                /* 
                   border会撑大盒子的大小
                 */
                border: 1px solid blue;
                /* 
                   padding表示盒子的内边距,盒子内容和盒子边框的距离
                   padding: 1px 2px 3px 4px  上右下左的内边距
                   padding: 1px 2px 3px;  上右下,左和右的值一样
                   padding: 1px 2px; 上右,下和上一样,左和右的值一样
                   padding: 1px; 上右下左都一样
                 */
                /* 
                 padding会撑大盒子的大小
                 */
                padding: 1px;
                /* 
                 margin盒子的外边距,盒子和盒子外其他内容之间的距离
                 margin: 1px; 上右下左都一样
                 */
                /* 
                 margin 不会撑大盒子的大小
                 */
                margin: 1px;
            }
            
            .c2{
                width: 100px;
                height: 100px;
                background-color: red;
                border: 2px solid blue;
                padding: 2px;
                /* css3的属性
                 使用box-sizing: border-box;这个后
                 宽高就是盒子的宽高,内容的宽高自动减少了
                 */
                box-sizing: border-box;
            }
        </style>
    </head>
    <body>
        <div class="c1">
            div1
        </div>
        
        
        <div class="c2">
            div1
        </div>
    </body>
</html>

盒子水平居中

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>盒子水平居中</title>
        <style type="text/css">
            /* 
               清除页面默认的外边距和内边距
               0可以不带px单位
             */
            *{
                margin: 0;
                padding: 0;
            }
            div{
                width: 100px;
                height: 100px;
                background-color: red;
                /* 盒子水平居中 */
                margin: 0 auto;
            }
        </style>
    </head>
    <body>
        <div>
            
        </div>
    </body>
</html>

css页面的布局

css中页面的布局分为:标准流、浮动流、定位流

标准流

页面默认就是标准流,也就是从上到下,从左到右的显示布局

浮动流

浮动流是一种脱离标准流水平布局方式


文章作者: 勾魂大猩猩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 勾魂大猩猩 !
  目录