1.什么是CSS
如何学习
CSS是什么
CSS怎么用(快速入门)
==CSS选择器(重点+难点)==
美化网页(文字、阴影、超链接、列表、渐变…)
盒子模型
浮动
定位
网页动画(特效效果)
1.1 什么是CSS
Cascading Style Sheet层叠级联样式表
CSS:表现(美化网页)
字体,颜色,边距,高度,宽度,背景图片,网页定位,网页浮动…
1.2 发展史
CSS1.0
CSS2.0 DIV(块)+CSS,HTML与CSS结构分离的思想,网页变得简单,SEO
CSS2.1 浮动,定位
CSS3.0 圆角,阴影,动画…浏览器兼容性~
练习格式:
1.3 快速入门
基本入门
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > h1 { color : red; } </style > </head > <body > <h1 > 我是标题</h1 > </body > </html >
建议使用这种规范
css的优势:
内容和表现分离
网页结构表现统一,可以实现复用
样式十分的丰富
建议使用独立于html的css文件
利用SEO,容易被搜索引擎收录!
1.4 css的三种导入方式
优先级:就近原则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > h1 { color : green; } </style > <link rel ="stylesheet" href ="css/style.css" > </head > <body > <h1 style ="color: red" > 我是标题</h1 > </body > </html >
拓展:外部样式两种写法
html
1 2 <link rel ="stylesheet" href ="css/style.css" >
@import是CSS2.1特有的!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > @import url("css/style.css" ); </style > </head > <body > <h1 > 我真帅</h1 > </body > </html >
2.选择器
作用:选择页面上的某一个或者某一类元素
2.1基本选择器
1.标签选择器:选择一类标签 标签{}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > h1 { color : red; } </style > </head > <body > <h1 > 学Java</h1 > <h1 > 学Java</h1 > <p > 王同学</p > </body > </html >
2.类 选择器 class:选择所有class属性一致的标签,跨标签 .类名{}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > .me { color : red; } .you { color : green; } </style > </head > <body > <h1 class ="me" > 标题1</h1 > <h2 class ="you" > 标题2</h2 > <h3 class ="me" > 标题3</h3 > <p class ="me" > p标签</p > </body > </html >
3.id选择器:全局唯一! #id名{}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > #wang { color : #fe5338 ; } .style1 { color : #a6fef2 ; } h1 { color : #fefc21 ; } </style > </head > <body > <h1 class ="style1" id ="wang" > 标题1</h1 > <h1 class ="style1" > 标题2</h1 > <h1 class ="style1" > 标题3</h1 > <h1 > 标题4</h1 > <h1 > 标题5</h1 > </body > </html >
优先级:id > class > 标签
2.2层次选择器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > .active ~p { background : antiquewhite; } </style > </head > <body > <p > p0</p > <p class ="active" > p1</p > <p > P2</p > <P > P3</P > <ul > <li > <p > p4</p > </li > <li > <p > p5</p > </li > <li > <p > p6</p > </li > </ul > </body > </html >
1.后代选择器:在某个元素的后面 祖爷爷 爷爷 爸爸 你
1 2 3 4 body p { background : red; }
2.子选择器,一代,儿子
1 2 3 4 body >p { background : blue; }
3.相邻弟弟选择器 同辈
1 2 3 4 .active + p { background : yellow; }
4.通用选择器(当前选中元素的向下所有弟弟们元素)
1 2 3 4 .active ~p { background : antiquewhite; }
2.3结构伪类选择器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > ul li :first -child{ background : red; } ul li :last-child { background : blue; } p :nth-child (1 ){ background : #fef349 ; } p :nth-of-type (2 ){ background : #f831fe ; } </style > </head > <body > <p > p1</p > <p > P2</p > <P > P3</P > <ul > <li > li1</li > <li > li2</li > <li > li3</li > </ul > </body > </html >
2.4属性选择器(常用)
id+class结合~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > .demo a { float : left; display : block; height : 50px ; width : 50px ; border-radius : 10px ; background : #fe5338 ; text-align : center; color : #a6fef2 ; text-decoration : none; margin-right : 5px ; font : bold 20px /50px Arial; } a [herf$=pdf] { background : yellow; } </style > </head > <body > <p class ="demo" > <a href ="http://www.baidu.com" class ="links item first" id ="first" > 1</a > <a href ="" class ="links item active" target ="_blank" title ="test" > 2</a > <a href ="images/123.html" class ="item links" > 3</a > <a href ="images/123.png" class ="item links" > 4</a > <a href ="images/123.jpg" class ="item links" > 5</a > <a href ="abc" class ="item links" > 6</a > <a href ="/a.pdf" class ="item links" > 7</a > <a href ="/abc.pdf" class ="item links" > 8</a > <a href ="abc.doc" class ="item links" > 9</a > <a href ="abcd.doc" class ="item links last" > 10</a > </p > </body > </html >
= 绝对等于
*= 包含这个元素
^= 以这个元素开头
$= 以这个元素结尾
3.美化网页元素
3.1为什么要美化网页
有效的传递页面信息
美化网页,页面漂亮,才能吸引用户
凸显页面的主题
提高用户的体验
span标签:重点要突出的字,使用span套起来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > #title1 { font-size : 50px ; } </style > </head > <body > 欢迎学习<span id ="title1" > Java</span > </body > </html >
3.2字体样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <style > body { font-family : Arial Black,楷体; color : red; } h1 { font-size : 50px ; } .p1 { font-weight : lighter; } </style >
1 2 3 4 5 <style > p { font : oblique bolder 16px 楷体; } </style >
3.3文本样式
颜色 color rgb rgba
文本对齐的方式 text-align:center
首行缩进 text-indent:2em
行高 line-height:
装饰 text-decoration:
文本图片水平对齐 vertical-align: middle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > h1 { color : rgba (0 ,255 ,255 ,0.8 ); text-align : center; } .p1 { text-indent : 2em ; } .p3 { background : antiquewhite; height : 300px ; line-height : 300px ; } .l1 { text-decoration : underline; } .l2 { text-decoration : line-through; } .l3 { text-decoration : overline; } a { text-decoration : none; } img ,span { vertical-align : middle; } </style > </head > <body > <a href ="" > 123</a > <p class ="l1" > 1234567</p > <p class ="l2" > 1234567</p > <p class ="l3" > 1234567</p > <h1 > 故事介绍</h1 > <p class ="p1" > 上古时期妖兽纵横,一位神秘道人分别授予了阴阳五行的特殊能力给金木水火土五个家族来抵抗妖兽,他们将妖兽驱赶到神隐雾山之中,设立结界。</p > <p > 雾山之中另有被封印于巨阙神盾之中的具有强大灵力的麒麟兽,常常吸引来那些想要提升妖力突破结界的妖兽。火行使者闻人翊悬为救其母私自打开了巨阙神盾,小麒麟趁机偷溜出来,妖兽界将掀起一股腥风血雨.....</p > <p class ="p3" > When I wake up in the morning,You are all I see;When I think about you,And how happy you make me。You're everything I wanted;You're everything I need;I look at you and know;That you are all to me。</p > <p > <img src ="images/1.png" alt ="" > <span > 123456789</span > </p > </body > </html >
3.4阴影
1 2 3 4 #price { text-shadow : #a6fef2 10px 10px 3px ; }
3.5超链接伪类
正常情况下 a , a:hover
1 2 3 4 5 6 7 8 9 10 11 12 13 14 a { text-decoration : none; color : black; } a :hover { color : orange; font-size : 50px ; } a :active { color : green; }
3.6列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ul { background : #a0a0a0 ; } ul li { height : 30px ; list-style : none; text-indent : 1em ; }
本小节html和css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > 列表样式</title > <link rel ="stylesheet" href ="css/style.css" type ="text/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 >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #nav { width : 300px ; background : #a0a0a0 ; } .title { font-size : 18px ; font-weight : bold; text-indent : 1em ; line-height : 35px ; background : red; } ul { background : #a0a0a0 ; } ul li { height : 30px ; list-style : none; text-indent : 1em ; } a { text-decoration : none; font-size : 14px ; color : #000 ; } a :hover { color : orange; text-decoration : underline; }
3.7背景
背景颜色
背景图片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <style> div { width : 1000px ; height : 700px ; border : 1px solid red; background-image : url ("images/book.png" ); } .div1 { background-repeat : repeat-x; } .div2 { background-repeat : repeat-y; } .div3 { background-repeat : no-repeat; } </style>
3.8渐变
1 2 background-color : #4158D0 ;background-image : linear-gradient (43deg , #4158D0 0% , #C850C0 46% , #FFCC70 100% );
https://www.grabient.com/
4.盒子模型
4.1什么是盒子模型
margin:外边距
padding:内边距
border:边框
4.2边框
1.边框的粗细
2.边框的样式
3.边框的颜色
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <style> #box { width : 300px ; border : 1px solid red; } h2 { font-size : 16px ; background-color : #3cbda6 ; line-height : 30px ; color : white; } form { background : #3cbda6 ; } div :nth-of-type (1 ) input { border : 3px solid black; } div :nth-of-type (2 ) input { border : 3px dashed #4d0b8c ; } div :nth-of-type (3 ) input { border : 3px dashed #008c27 ; } </style>
4.3内外边距
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > #box { width : 300px ; border : 1px solid red; margin : 0 auto; } h2 { font-size : 16px ; background-color : #3cbda6 ; line-height : 30px ; color : white; margin : 0 1px 2px 3px ; } form { background : #3cbda6 ; } input { border : 1px solid black; } div :nth-of-type (1 ){ padding : 10px ; } </style > </head > <body > <div id ="box" > <h2 > 会员登录</h2 > <form action ="#" > <div > <span > 用户名:</span > <input type ="text" > </div > <div > <span > 密码:</span > <input type ="text" > </div > <div > <span > 邮箱:</span > <input type ="text" > </div > </form > </div > </body > </html >
盒子的计算方式:你这个元素到底多大?
margin+border+padding+内容宽度
4.4圆角边框
1 2 3 4 5 6 7 8 9 10 11 <style > div { width : 100px ; height : 100px ; border : 10px solid red; border-radius : 50px 20px 10px 5px ; } </style >
4.5盒子阴影
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > div { border-radius : 50px ; box-shadow : 10px 10px 1px yellow; } p { width : 500px ; text-align : center; } </style > </head > <body > <div style ="width: 500px;display: block; text-align: center" > <div style ="margin: 0 auto" > <img src ="images/book.png" alt ="" > </div > </div > <p > 我是书</p > </body > </html >
5.浮动
5.1标准文档流
块级元素:独占一行
行内元素:不独占一行
行内元素 可以被包含在 块级元素 中,反之,则不可以~
5.2display
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Title</title > <style > div { width : 100px ; height : 100px ; border : 1px solid red; display : inline-block; } span { width : 100px ; height : 100px ; border : 1px solid red; display : inline-block; } </style > </head > <body > <div > div块元素</div > <span > span行内元素</span > </body > </html >
这个也是一种实现行内元素排列的方式,但是我们很多情况都是用float
5.3float
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 div { margin : 10px ; padding : 5px ; } #father { border : 1px #000 solid; } .layer01 { border : 1px #F00 dashed; display : inline-block; float : right; } .layer02 { border : 1px #00F dashed; display : inline-block; float : right; } .layer03 { border : 1px #060 dashed; display : inline-block; float : right; } .layer04 { border : 1px #666 dashed; font-size : 12px ; line-height : 23px ; display : inline-block; float : right; }
5.4父级边框塌陷的问题
clear
解决方案:
1.增加父级元素的高度~
1 2 3 4 #father { border : 1px #000 solid; height :800px }
2.增加一个空的div标签,清除浮动
1 2 3 4 5 6 7 <div class="clear"></div> .clear{ clear:both; margin: 0; padding: 0; }
3.overflow
在父级元素中增加一个 overflow: hidden;
4.父类添加一个伪类:after
1 2 3 4 5 #father :after { content : '' ; display : block; clear : both; }
小结:
1.浮动元素后面增加空div
简单,代码中尽量避免空div
2.设置父元素的高度
简单,元素假设有了固定的高度,就会被限制
3.overflow
简单,下拉的一些场景避免使用
4.父类添加一个伪类:after(推荐)
写法稍微复杂一点,但是没有副作用,推荐使用!
5.5对比
6.定位
6.1相对定位
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 <!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 #666 ; padding : 0px ; } #first { background-color : #a13d30 ; border : 1px dashed #b27530 ; position : relative; top : -20px ; left : 20px ; } #second { background-color : #255099 ; border : 1px dashed #255066 ; } #third { background-color : #1c6699 ; border : 1px dashed #1c6615 ; position : relative; bottom : -10px ; right : 20px ; } </style > </head > <body > <div id ="father" > <div id ="first" > 第一个盒子</div > <div id ="second" > 第二个盒子</div > <div id ="third" > 第三个盒子</div > </div > </body > </html >
相对定位:position: relative;
相对于原来的位置,进行指定的偏移,相对定位的话,它仍然在标准文档流中,原来的位置会被保留
1 2 3 4 top : -20px ;left : 20px ;bottom : -10px ;right : 20px ;
练习: