CSS

1、什么是CSS?

  • CSS怎么用?
  • CSS是什么
  • CSS选择器

1.1、什么是CSS

Cascading Style Sheet 层叠级联样式表

CSS :表现(美化网页)

字体、颜色、边距、高度、宽度、背景图片、网页定位、网页浮动…

1.2、快速入门

练习格式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--规范:在<style>里面写css样式,每一个声明最好使用分号结尾
        语法:
            选择器{
                声明一;
                声明二;
                声明三;
            }
    -->
    <style>
        h1{
            color: red;
        }
    </style>
</head>
<body>

<h1>我是标题</h1>
</body>
</html>

等同于:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--在html页面中注入css样式-->
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>我是标题</h1>
</body>
</html>
h1{
     color: red;
 }

css优势:

  1. 内容和标签分离
  2. 网页结构标签统一,可以实现复用
  3. 样式十分的丰富
  4. 建议使用独立于html的css样式
  5. 利用SEO,容易被搜索引擎收录

1.3、css的三种导入方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>导入方式</title>
    <!--内部样式-->
    <style>
        h1{
            color:green;
        }
    </style>
    <!--外部样式-->
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<!--行内样式:在标签元素中编写一个style标签-->
<!--优先级:就近原则-->
<h1 style="color: red">我是标题</h1>
</body>
</html>

扩展:外部样式两种写法

  • 链接式

    html

        <!--外部样式-->
        <link rel="stylesheet" href="css/style.css">
    
  • 导入式

        <style>
            @import url("css/style.css");
        </style>
    

2、选择器

作用:选择页面上的某一个或某一类标签

2.1、基本选择器

  1. 标签选择器:选择一类标签

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>标签选择器</title>
        <style>
            /*标签选择器选中所有的标签*/
            h1{
                color: red;
                background-color: #b1ff8c;
                /*圆角边框*/
                border-radius: 10px; 
            }
            p{
                font-size: 80px;
            }
        </style>
    </head>
    <body>
    
    <h1>h1标签</h1>
    <h1>h1标签</h1>
    <p>p标签</p>
    </body>
    </html>
    
  2. 类选择器:class:选择所有的class属性一致的标签,可以跨标签

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>类选择器</title>
        <style>
            /*类选择器的名称 .class名称{}
             好处:可以多个标签归类,是同一个class
             可以复用
            */
            .he{
                color: red;
                background: pink;
            }
            .she{
                color: purple;
            }
        </style>
    </head>
    <body>
    
    <h1 class="he">h1标签</h1>
    <h1 class="she">h1标签</h1>
    <p>p标签</p>
    </body>
    </html>
    
  3. id 选择器:全局唯一。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            /*格式:
                #id名{}
            id必须保证唯一
            */
            #he{
                color: pink;
            }
        </style>
    </head>
    <body>
    
    <h1 id="he">标题一</h1>
    <h1>标题二</h1>
    <h1>标题三</h1>
    <h1>标题四</h1>
    </body>
    </html>
    
    三个选择器之间的优先:
    不遵循就近原则,id选择器>class选择器>标签选择器
    

2.2、层次选择器

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

<p> p0</p>
<p class="p1"> p1</p>
<p> p2</p>

<ul>
    <li><p>li1</p></li>
    <li><p>li2</p></li>
    <li><p>li3</p></li>
</ul>
    
<p> p3</p>
<p> p4</p>
</body>
</html>

后代选择器 选中自己所有的子孙后代

/*选中body下所有的p标签,包括li里面的p标签*/
body p{
	background: red;
}

子选择器 只选择自己儿子辈的某些标签

/*选中body儿子辈中的p标签*/
body>p{
	background: red;
}

相邻兄弟选择器 同辈

/*只选择 .p1同辈下面一个(弟弟)的p标签*/
.p1+p{
	background: red;
}

通用选择器

/*选择 .p1同辈下所有(弟弟)的标签*/
.p1~p{
	background: red;
}

2.3、结构伪类选择器

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

<a href="#">dsafsa</a>
<p>标签一</p>
<p>标签二</p>
<p>标签三</p>
    
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
</ul>
    
</body>
</html>

避免使用id选择器和class选择器

/* 选中ul的第一个li标签 */
ul li:first-child{
    background: #b1ff8c;
}

/* 选中ul下面最后一个li标签 */
ul li:last-child{
    background: #ff8aa9;
}

/* 选中标签一,定位到父元素,选择父元素的第一个元素 */
p:nth-child(1){     /* 选中p元素的父元素,选择父元素的第一个元素,且是p标签;如果不是,则失效*/
    background : #8a2dff;
}

/* 选中父元素下,标签为p的第二个元素*/
p:nth-of-type(2){
    background: blue;
}

/* a标签鼠标悬停变色 */
a:hover{
    background: yellow; /* 背景变 */
    color: #ff2cae;     /* 字体颜色变 */
}

2.4、属性选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p class="demo">
    <a href="" id="first">1</a>
    <a href="" class="one two">2</a>
    <a href="" class="one two three">3</a>
    <a href="">4</a>
    <a href="">5</a>
    <a href="">6</a>
    <a href="">7</a>
    <a href="" id="end">8</a>
</p>
</body>
</html>
        .demo a{
            float: left;
            display: block;
            border-radius: 10px;
            height: 35px;
            width: 60px;
            line-height: 35px;
            text-decoration: none;
            background: blue;
            text-align: center;
            margin-right: 5px;
            color: lavenderblush;
        }

在这里插入图片描述

/* 属性名,属性名=属性值(正则) class
	=  绝对等于
	= 包含
*/

/* 存在id属性的元素 */
a[id]{
    background: yellow;
}

/* id为first的元素 */
a[id="first"]{
    background: red;
}

3、美化网页元素

3.1、为什么要美化

  1. 有效的传递页面信息
  2. 美化网页,页面漂亮才能吸引用户
  3. 凸显页面的主体
  4. 最高用户体验

span标签:重点要突出的字使用span标签套起来

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        span{
            font-size: 30px;
        }
    </style>
</head>
<body>
我要学习 <span>java</span>
</body>
</html>

3.2、字体样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*
            font-family     字体
            font-size       字体大小
            font-weight     字体粗细
            color           字体颜色
        */
        body{
            font-family: "Ink Free",楷体;
        }
        h1{
            font-size: 50px;
            color: red;
        }
        .p1{
            font-weight: bold;
        }
    </style>
</head>
<body>
<h1>剧情介绍:</h1>
<p class="p1">
    平静安详的元泱境界,每隔333年,总会有一个神秘而恐怖的异常生物重生,它就是魁拔!
</p>
<p class="p2">
    魁拔纪元1664年,天神经过精确测算后,在第六代魁拔苏醒前一刻对其进行毁灭性打击。
</p>
<p>
When I wake up in the morning,<br>
You are all I see;<br>
When I think about you,<br>
</p>
</body>
</html>

3.3、文本样式

  1. 颜色
  2. 文本对齐方式
  3. 首行缩进
  4. 行高
  5. 装饰
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*
            color: rgba(0,255,255,0.7);     字体样式(红,绿,蓝,透明度)
            text-align      排版(居中、居左、居右)
            text-indent     首行缩进,一般为两个字(2em)
            height=line-height      可以使文本上下居中
            
            text-decoration
                line-through    中划线
                overline        上划线
                underline       下划线
        		none			a标签去下划线
         */
        h1{
            color: rgba(0,255,255,0.7);
            text-align: center;
        }
        p{
            text-indent: 2em;
            height: 100px;
            line-height: 100px;
            background: pink;
        }
        .p1{
            text-decoration: underline;
        }
        /* 文本图片样式居中 */
        img,span{
            vertical-align: middle;
        }
    </style>
</head>
<body>
<h1>剧情介绍:</h1>
<p class="p1">
    平静安详的元泱境界,每隔333年,总会有一个神秘而恐怖的异常生物重生,它就是魁拔!魁拔的每一次出现,都会给元泱境界带来
    巨大的灾难!即便是天界的 神族,也在劫难逃。在天地两界各种力量的全力打击下,魁拔一次次被消灭,但又总是按333年的周期
    重新出现。
</p>
<p class="p2">
    魁拔纪元1664年,天神经过精确测算后,在第六代魁拔苏醒前一刻对其进行毁灭性打击。但谁都没有想到,由于一个差错导致新一代
    魁拔成功地逃脱了致命一击。很快,天界魁拔司和地界神圣联盟均探测到了魁拔依然生还的迹象。因此,找到魁拔,彻底消灭魁拔,再
    一次成了各地热血勇士的终极目标。
</p>
<p>
    When I wake up in the morning,<br>
    You are all I see;<br>
    When I think about you,<br>
    And how happy you make me。<br>
    You're everything I wanted;<br>
    You're everything I need;<br>
    I look at you and know;<br>
    That you are all to me。
</p>
    
    <p>
        <img src="images/a.png" alt="" height="300" width="250">
        <span>3214534564</span>
    </p>
</body>
</html>

3.4、阴影

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /* 设置去下划线和黑色字体 */
        a{
            text-decoration: none;
            color: #000000;
        }
        /* 鼠标悬停时状态 */
        a:hover{
            color: orange;
        }
        /* 阴影 阴影颜色 水平偏移 垂直偏移 偏移距离 */
        #price{
            text-shadow: #39c3ff 0px 0px 3px;
            color: orange;
        }
    </style>
</head>
<body>
    <p>
        <a href="#" title="桌面图片"><img src="images/a.png" alt="桌面图片"width="200" height="250"></a>
    </p>
    <p><a href="#">来自:桌面截图</a></p>
    <p><a href="#" id="price">¥99</a></p>
</body>
</html>

3.5、列表

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="nav">
    <h2 class="title">全部商品分类</h2>
    <ul>
        <li>
            <a href="#">图书</a>
            <a href="#">音像</a>
            <a href="#">数字商品</a>
        </li>
        <li>
            <a href="#">家用电器</a>
            <a href="#">手机</a>
            <a href="#">数码</a>
        </li>
        <li>
            <a href="#">电脑</a>
            <a href="#">办公</a>
        </li>
        <li>
            <a href="#">家居</a>
            <a href="#">家装</a>
            <a href="#">厨具</a>
        </li>
        <li>
            <a href="#">服饰鞋帽</a>
            <a href="#">个性化妆</a>
        </li>
        <li>
            <a href="#">礼品箱包</a>
            <a href="#">钟表</a>
            <a href="#">珠宝</a>
        </li>
        <li>
            <a href="#">食品饮料</a>
            <a href="#">保健食品</a>
        </li>
        <li>
            <a href="#">彩票</a>
            <a href="#">旅行</a>
            <a href="#">充值</a>
            <a href="#">票务</a>
        </li>
    </ul>
</div>
</body>
</html>
/* 一般我们写导航栏不用nav标签,而是用一个div标签,把 id="nav" */
#nav{
    width: 300px;
    background: rgba(83, 89,255, 0.25);
}

.title{
    width: 300px;
    height: 35px;
    font-size: 18px;
    font-weight: bold;
    text-indent: 1em;
    line-height: 35px;
    background: red;
    text-align: center;
    background: red url("../images/r.png") 246px 7px  no-repeat;
}

/* ul li
    list-style:
        none        去掉圆点
        circle      空心圆
        decimal     数字
        square      正方形
*/
ul li{
    height: 30px;
    line-height: 30px;
    list-style: none;
}

a{
    text-decoration: none;
    font-size: 14px;
    color: #000000;
}
a:hover{
    color: orange;
}

3.6、背景

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
</body>
</html>
div{
    width: 1000px;
    height: 700px;
    border: 1px solid red;
    background-image: url("images/d.png");
    /* 默认是全部平铺的 */
}
.div1{
    background-repeat: repeat-x;        /*水平平铺*/
}
.div2{
    background-repeat: repeat-y;        /*垂直平铺*/
}
.div3{
    background-repeat: round;           /*全部平铺*/
}
/* no-repeat 不平铺,只有一个 */

3.7、渐变

推荐一个关于做渐变的网站

网站链接:点击跳转

body{
    background-color: #00DBDE;
    background-image: linear-gradient(90deg, #00DBDE 0%, #FC00FF 100%);
}

在这里插入图片描述

4、盒子模型

4.1、什么是盒子模型

margin 外边距

padding 内边距

border 边框

4.2、边框

  1. 边框的颜色
  2. 粗细
  3. 样式
/* 边框粗细、样式、颜色 */
#box{
    border: 1px solid red;
}

4.3、内外边距

/* 外边距水平设置为auto时,可以做到居中 */
#box{
    margin: 0px auto;
}
/* margin
 	0 0 0 0 代表 上、左、下、右
	0 0 0   代表上 左右 下
	0 0		代表上下、左右

内边距同上
*/

4.4、圆角边框

四个角

额,这个东西是可以做一个圆得

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /* border-radius : 左上、右上、右下、左下 */
        /* 一个正方形,长宽都是300px,4个角都设置为圆角 */
        #div01{
            width: 300px;
            height: 300px;
            background: red;
            border-radius:300px;
        }
    </style>
</head>
<body>
<div id="div01"></div>
</body>
</html>

4.5、阴影

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        img{
            box-shadow: 1px 1px 100px yellow;
            border-radius: 100px;
            margin: 0 auto;
        }
    </style>
</head>
<body>

<div><img src="images/d.png" alt=""></div>

</body>
</html>

在这里插入图片描述

5、浮动

标准文档流

5.1、display和float

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
		/*  float 浮动(左、右) 会使元素脱离标准文档流
        	display none 使标签呢内容隐形
        			inline-block 是块元素,但可以在一行
        			inline  行内元素
        			block   块元素
        */
        #div01
            float: left;
        }
        span{
            display: none;
            float: left;
            background: blue;
        }
    </style>
</head>
<body>
<span id="span">fdsfdsopajfaosdf</span>
<div id="div01"><img class="img" src="images/a.png" alt=""></div>
<div></div>
</body>
</html>

5.2、父级边框塌陷问题

  1. 增加父级边框的height

    #fa{
        border: 3px solid black;
        height: 800px;
    }
    
  2. 增加一个空的div清除浮动

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            /*clear		left	左侧不能有浮动
            			right	右侧
            			both	两侧
            			none    默认*/
            #fa{
                border: 3px solid black;
                height: 800px;
            }
            #div01{
                float: left;
            }
            #div02{
                float: left;
            }
            #div03{
                float: left;
            }
            span{
                /*display: none;*/
                float: left;
                background: blue;
            }
            #clear{
                clear: both;
            }
        </style>
    </head>
    <body>
    <div id="fa">
        <span id="span">fdsfdsopajfaosdf</span>
    
        <div id="div01"><img class="img" src="images/a.png" alt=""></div>
        <div id="div02"><img src="images/d.png" alt=""></div>
        <div id="div03"><img src="images/r.png" alt=""></div>
        <div id="clear"></div>
    </div>
    </body>
    </html>
    
  3. overflow

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            /*overflow
            	hidden  多出的部分隐藏
            	scroll  显示滚动条*/
            div{
                height: 200px;
                width: 300px;
                overflow: scroll;
            }
        </style>
    </head>
    <body>
    <div>
        <img src="images/d.png" alt="">
        <p>“正能量”指的是一种健康乐观、积极向上的动力和情感,是社会生活中积极向上的行为</p>
    </div>
    </body>
    </html>
    

    当div设置的边框宽高不能足里面图片的宽高时,div的宽高就会被图片撑开,这时我们可以设置一个overflow属性;

  4. 父类添加一个伪类

    #father:after{
        content: "";
        display: block;
        clear: both;
    }
    

小结:

  1. 浮动元素后面增加空的div

    简单、代码中尽量避免空div

  2. 设置父元素的高度

    元素假设有了固定的高度,就会被限制

  3. overflow

    滚动条,会看起来很诡异,不好看

  4. 在父类添加伪类 (建议使用):after

    写法稍微复杂,但是没有副作用

5.3、对比

  • display

    方向不考研控制

  • float

    浮动起来的话会脱离标准文档流,要解决父级边框塌陷问题

6、定位

6.1、相对定位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*  相对定位:相对于自己原来的位置进行偏移 */
        body{
            padding: 20px;
        }
        div{
            margin: 10px;
            padding: 5px;
            font-size: 12px;
            line-height: 25px;
        }
        #father{
            border: 1px solid black;
            padding: 0px;
        }
        #first{
            border: 1px solid black;
            background-color: #00DBDE;
            position: relative;/* 相对定位,上下左右 */
            top: 20px;
            ringt: 20px;
        }
    </style>
</head>
<body>

<div id="father">
    <div id="first">第一个盒子</div>
    <div id="second">第二个盒子</div>
    <div id="third">第三个盒子</div>
</div>
</body>
</html>

相对定位后,仍然在标准文档流,原来的位置会被保留

6.2、绝对定位和固定定位

绝对定位(absolute):基于xxx定位,上下左右

  1. 没有父级元素定位的前提下,相对于浏览器定位
  2. 如果父级元素存在定位,我们通常会相对于父级元素进行偏移。
  3. 在父级元素范围内移动

附:绝对定位后脱离标准文档流

#second{
border: 1px dashed black;
background-color: #00aaDE;
position: absolute;  /*绝对定位,随着浏览器滚动条的移动会错位 */
top: 300px;
left: 20px;
right: 30px;
}
#third{
    border: 1px solid black;
    background-color: #00DB66;
    position: fixed;/* 绝对定位,在右下角,“返回顶部”样式 */
    bottom: 0;
    right: 0;
}

6.3、z-index

z-index,图层,最小0,最大无穷

opacity: 透明度

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #father{
            margin: 0 auto;
            width: 300px;
            height: 300px;
            position: relative;
        }
        .conBg,.conText{
            position: absolute;
            top: 150px;
        }
        .conBg{
            background-color: black;
            width: 150px;
            height: 20px;
            opacity: 0.6; /* 透明度 */
        }
        .conText{
            color: rgba(237, 255, 170, 0.87);
            font-size: 12px;
            line-height: 25px;
            z-index: 100;
            height: 25px;
            position: absolute;
            left: 10px;
        }
    </style>
</head>
<body>
<div id="father">
    <div><img src="images/d.png" alt=""></div>
    <div class="conText">大家好,我是小傻瓜</div>
    <div class="conBg"></div>
</div>
</body>
</html>

7、动画

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值