HTML与CSS的关系 CSS(Cascade Style Sheets)层叠样式表, 是一种用来表现HTML文件样式的计算机语言。
CSS 目前最新版本为 CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统 HTML 的表现而言,CSS 能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体 字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最 优秀的表现设计语言。CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较 强的易读性。
CSS是用来美化网页用的,没有网页则CSS毫无用处,所以CSS需要依赖HTML展示其功能。
CSS语法格式 2.1. 注释 可以将注释插入 CSS代码中,这样可以提高其可读性,使代码更易被人理解。浏览器会忽略注释, 也不会显示它们。
2.2. 行内式 行内式将样式定义在具体html元素的style属性中。以行内式写的CSS耦合度高,只适用于当前元 素,在设定某个元素的样式时比较常用。但是这种写法会使得页面非常杂乱无章,真正开发中实际上是 使用嵌入式或引入外联样式文件的方式来进行渲染的。
1 2 COPY <div style ="width:200px;height:300px;background:black;" > </div >
2.3. 嵌入式 嵌入式通过在html页面内容开辟一段属于css的代码区域,通常做法为在 < head>
标签中嵌套<style>
标签,在 <style>
中通过==选择器==的方式调用指定的元素并设置相关 CSS。
1 2 3 4 5 6 7 8 9 10 11 12 13 COPY选择器名称 { 属性:属性值; ... } <style type ="text/css" > div { width :200px ; height :300px ; background :black; } </style >
注意:
css 声明要以分号 ; 结束,声明以 {} 括起来
建议一行书写一个属性
若值为若干单词,则要给值加引号,如font-family: "agency fb"
;
2.4. 引入外联样式文件 在实际开发当中,很多时候都使用引入外联样式文件,这种形式可以使html页面更加清晰,而且可 以达到更好的重用效果。
style.css
1 2 3 4 5 6 COPY div { width :200px ; height :300px ; background :black; }
index.html
1 COPY<link rel ="stylesheet" type ="text/css" href ="style.css" />
rel
: 规定当前文档与被链接文档之间的关系。 stylesheet
: 文档的外部样式表。 很多时候,大量的 HTML 页面使用了同一个CSS。那么就可以将这些 CSS 样式保存在一个单独 的 .css
文件中,然后通过 <link />
元素去引入它。
CSS选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。 CSS 选择器有很多,掌握常用的即可。
3.1. 基本选择器 3.1.1. * 通用选择器 1 2 3 4 5 COPY * { margin : 0 ; padding : 0 ; }
3.1.2. 元素选择器 1 2 3 4 5 6 7 8 9 10 COPY选择器名称 { 属性:属性值; ... } div { width :200px ; height :300px ; background :black; }
3.1.3. . 类选择器 1 2 3 4 5 6 7 8 9 10 COPY.class 属性值 { 属性:属性值; ... } .dv { width :200px ; height :300px ; background :black; }
3.1.4. # id选择器 1 2 3 4 5 6 7 8 9 10 COPY#id 属性值 { 属性:属性值; ... } #dv { width :200px ; height :300px ; background :black; }
3.1.5. 分组选择器 当几个元素样式属性一样时,可以共同调用一个声明,元素之间用逗号分隔。
1 2 3 4 5 6 7 8 9 10 11 12 COPY选择器1 ,选择器2 , ...{ 属性:属性值; ... } p ,#name { color : red; font-size : 20px ; }
3.2. 2、组合选择器 CSS 组合选择器说明了两个选择器直接的关系。 CSS组合选择符包括各种简单选择符的组合方式。
3.2.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 COPY父元素 子元素(可以继续获取子元素的子元素) { 属性:属性值; ... } .food li { border: 1 px solid blue;}.food li ul li { border: 1 px solid red;} COPY<h1> 食物</h1> <ul class="food"> <li> 水果 <ul> <li> 香蕉</li> <li> 苹果</li> <li> 梨</li> </ul> </li> <li> 蔬菜 <ul> <li> 白菜</li> <li> 油菜</li> <li> 卷心菜</li> </ul> </li> </ul>
CSS常用属性 4.1. 背景 背景属性用于定义HTML元素的背景效果。
4.1.1. background-color 设置元素的背景颜色。
1 2 3 4 5 6 COPY body { background-color :gray; background :gray; }
4.1.2. background-image 设置元素的背景图像,默认情况下,背景图像进行平铺重复显示,以覆盖整个元素实体。
1 2 3 4 5 6 COPY body { background-image : url (img/Daniel_Wu.jpg ); background : url (img/Daniel_Wu.jpg ); }
4.1.3. background-repeat 设置是否重复图像及如何重复背景图像。
1 2 3 4 5 6 7 COPY body { background-image : url (img/Daniel_Wu.jpg ); background-repeat : no-repeat; background : url (img/Daniel_Wu.jpg ) no-repeat; }
background-repeat
可选的值。
值
描述
repeat
默认。背景图像将在垂直和水平方向重复
no-repeat
背景图像仅显示一次
repeat-x
背景图像水平方向重复
repeat-y
背景图像垂直方向重复
4.2. 文本 4.2.1. color 设置文本的颜色。
1 2 3 4 5 6 7 8 9 10 11 COPY body { color :blue; } h1 { color :#00ff00 ;} h2 { color :rgb (255 ,0 ,0 ); }
4.2.2. text-align 设置文本对齐方式,center(居中),lex(左对齐),right(右对齐)。
1 2 3 COPYbody { text-align :center; }
4.2.3. text-decoration 规定添加到文本的修饰,属性值:none、underline、overline、line-through。
underline:对文本添加下划线。
overline:对文本添加上划线。
line-through:对文本添加中划线。
none:关闭原本应用到元素上的所有横线样式。
1 2 3 COPYh3 { text-decoration :underline; }
4.2.4. text-indent 设置文本首行缩进。
1 2 3 COPYp { text-indent : 2em ; }
4.3. 字体 4.3.1. font-family 文本字体,该属性设置文本的字体。 font-family
属性应该设置几个字体名称作为一种”后备”机制,如果浏览器不支持第一种字体, 他将尝试下一种字体,所以尽量将不常见的字体靠前,将最常见的字体放置在最后,作为替补。注意:
只有当字体名中含有空格或符号或汉字时,才需要在font-family声明中加引号:
1 2 3 COPYbody { font-family : "arial black" ; }
1 2 3 4 COPY p { font-family : "微软雅黑" , "黑体" , "agency fb" ; }
4.3.2. font-size 文本大小
1 2 3 4 5 6 7 8 COPY body { font-size : 50px ; } #span1 { font-size : 25px ; }
4.3.3. font-weight 字体加粗,该属性设置文本的粗细。100 ~ 900:为字体指定了 9 级加粗度。 font-weight: blod;
可以将文本设置为粗体。 400 等价于 normal; 700 等价于 bold。
1 2 3 4 5 6 7 8 9 10 COPYbody { font-weight : 100 ; font-weight : 900 ; font-weight : 700 ; font-weight : blod; font-weight : 400 ; font-weight : normal; }
4.4. 列表 4.4.1. list-style 设置列表样式, list-style 可选的值。
值
描述
none
无标记
disc
默认,标记是实心圆
circle
标记是空心圆
square
标记是实心方块
decimal
标记是数字
decimal-leading-zero
标记是0开头数字(01, 02, 03…)
lower-roman
标记是小写罗马数字(ⅰ, ⅱ, ⅲ,…)
upper-roman
标记大写罗马数字(Ⅰ, Ⅱ, Ⅲ,…)
lower-alpha
标记是小写英文字母(a, b, c,…)
upper-alpha
标记是大写英文字母(A, B, C,…)
1 2 3 4 COPY /* 列表样式无标记 */.food li ul li { list-style: none ; }
4.5. 对齐方式 4.5.1. text-align 规定元素中的文本的水平对齐方式。属性值如下。
值
描述
lex
默认值,文本排列到左边
right
文本排列到右边
center
文本排列到中间
justify
文本两端对齐
4.5.2. display display属性用于定义元素的显示类型。
属性值如下。
值
描述
none
此元素不会被显示
block
此元素将被显示为块级元素,此元素前后会带有换行符
inline
此元素被显示为内联元素,元素前后没有换行符
inline-block
行内块元素,li中使用会变为类似导航的效果
4.6. 盒子模型 border、padding、margin三个属性构成了盒子模型。
4.6.1. border 设置所有的边框属性。
1.可同时设置边框的宽度、样式、颜色
1 2 3 4 5 6 COPY div { border : 1px solid black; width : 200px ; height : 100px ; }
2.使用border-width、border-style、border-color单独设置
1 2 3 4 5 COPYdiv { border-width : 1px ; border-style : solid; border-color : black; }
border-style
的属性
值
描述
none
无边框
dotted
点状边框
dashed
虚线边框
solid
实心线边框
double
双实线边框
4.6.2. padding 设置元素所有内边距的宽度,默认按照上右下左的顺序设定,或者设置各边上内边距的宽度。
1 2 3 4 COPY div { padding :10px 5px 15px 20px ; }
单独设置各边的内边距: padding-top
、 padding-left
、 padding-bottom
、 paddingrigh
。
1 2 3 4 5 6 7 COPY div { padding-top : 10px ; padding-left : 5px ; padding-bottom : 15px ; padding-right : 20px ; }
4.6.3. margin 设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度。
1 2 3 4 COPY div { margin :10px 5px 15px 20px ; }
单独设置各边的外边距: margin-top
、 margin-left
、 margin-bottom
、 margin-right
。
1 2 3 4 5 6 7 COPY div { margin-top : 10px ; margin-left : 5px ; margin-bottom : 15px ; margin-right : 20px ; }
auto 可以设置居中效果。
1 COPYdiv { margin : 0px auto;}
auto:自动,可以理解为居中的意思,浏览器自动计算外边距。
margin: 0px auto;
0
或者 0px
表示上下间距为0px,auto表示左右外边距自动计算,表现为居中状态。
测试
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 COPY<!DOCTYPE html > <html > <head > <meta charset ="utf-8" /> <title > </title > <style > .a_div { width : 300px ; height : 300px ; border : 1px solid red; margin : 100px ; } .b_div { width : 200px ; height : 200px ; background : yellow; margin-left : 20px ; margin-top : 20px ; padding : 20px ; } </style > </head > <body > <div class ="a_div" > <div class ="b_div" > 你好</div > </div > </body > </html >
5.CSS定位和浮动 CSS 定位 (positioning) 属性允许你对元素进行定位 ,定位的基本思想很简单,它允许你定义元素框 相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。 CSS 有三种基本的定位机制:普通流、浮动和定位 除非专门指定,否则所有框都在普通流中定位,即普通流中的元素的位置由元素在HTML 中的位置 决定浏览器在读取 HTML 源代码的时候是根据元素在代码出现的顺序读取,最终元素的呈现方式是依据 元素的盒子模型来决定的。行内元素是从左到右,块状元素是从上到下。默认的书写方式即是普通流。
5.1. 定位position 通过使用 position 属性,我们可以选择 4 种不同类型的定位,这会影响元素框生成的方式。
值
描述
static
默认值,普通流
relative
相对定位,其子元素如果使用定位相对于它的位置改变
absolute
绝对定位,相对于其父元素的位置作为参照物
fixed
固定定位,相对于浏览器窗口作为参照物
static:默认值,普通流(忽略 left
, top
, right
, bottom
或者 z-index
声明)。 relative:生成相对定位的元素,相对于其正常位置进行定位。元素的位置通过 left
, top
,right
, bottom
属性进行改变,其子元素如果使用定位相对于它的位置改变。 absolute:生成绝对定位的元素,相对于其第一个父元素进行定位,如果父元素没有设置0
relative 属性,则向上继续寻找,直到body元素。元素的位置通过 left
, top
, right
,bottom
属性进行规定。 fixed:生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 left
, top
,right
, bottom
属性进行规定。
5.2. 浮动float float 的属性值有 none
、 left
、 right
。
值
描述
none
默认值,不浮动
lex
左浮动,元素从左边开始并列显示为一行
right
右浮动,元素从右边开始并列显示为一行
5.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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 COPY<!DOCTYPE html > <html > <head > <meta charset ="UTF-8" > <title > CSS定位和浮动</title > <style type ="text/css" > .a_div { width : 200px ; height : 200px ; background : black; position : relative; margin : 0 auto; } .b_div { width : 50px ; height : 50px ; background : yellow; position : absolute; top : 0px ; left : 0px ; } .c_div { width : 50px ; height : 50px ; position : fixed; bottom : 20px ; right : 20px ; background : blue; } #div1 { width : 100px ; height : 100px ; background : red; float : left; } #div2 { width : 100px ; height : 100px ; background : blueviolet; float : left; } #div3 { width : 100px ; height : 100px ; background : darkcyan; float : left; } #div4 { width : 100px ; height : 100px ; background : darksalmon; float : left; } #div4 :hover { background : black; } </style > </head > <body > <div class ="a_div" > <div class ="b_div" > </div > </div > <div class ="c_div" > </div > <div id ="div1" > </div > <div id ="div2" > </div > <div id ="div3" > </div > <div id ="div4" > </div > </body > </html >
6.案例练习:百度注册 百度注册,利用HTML+CSS+DIV开发百度注册页面。
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 67 COPY<!DOCTYPE html > <html > <head > <meta charset ="utf-8" /> <title > 注册百度账号</title > <link rel ="stylesheet" href ="css/baidu.css" /> </head > <body > <div id ="head" > <div id ="head_logo" > <a href ="http://www.baidu.com" > <img src ="img/baidu.gif" /> </a > </div > <div id ="head_login" > <span > 我已注册,现在就</span > <input type ="button" value ="登录" /> </div > </div > <div id ="nav" > <img src ="img/reg_hr.png" /> </div > <div id ="register" > <div id ="reg_form" > <form > <p > <label > 用户名</label > <input placeholder ="请设置用户名" /> </p > <p > <label > 手机号</label > <input placeholder ="可用于登录和找回密码" /> </p > <p > <label > 密码</label > <input placeholder ="请设置登录密码" /> </p > <p > <label > 验证码</label > <input placeholder ="请输入验证码" style ="width: 190px;" /> <button id ="reg_form_msg" > 获取短信验证码</button > </p > <div id ="reg_form_isCheck" > <input type ="checkbox" style ="width: 14px;height: 14px;" /> <span > 阅读并接受<a href ="#" > 《百度用户协议》</a > 及<a href ="#" > 《百度隐私权保护声明》</a > </span > </div > <div id ="reg_form_btn" > <button type ="button" > 注册</button > </div > </form > </div > <div id ="reg_qrcode" > <img src ="img/qrcode.png" /> </div > </div > <div id ="copyright" > <p > 2018 © Baidu</p > </div > </body > </html >
baidu.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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 COPY @charset "utf-8" ;#head { width : 1000px ; margin : 20px auto 0px auto; } #head #head_logo { width : 330px ; background : url (../img/logo.png ) right no-repeat; background-position -y: -5px ; cursor : pointer; float : left; padding-bottom : 5px ; } #head #head_login { float : right; font-size : 10px ; margin-top : 10px ; } #head #head_login input { font-weight : 700 ; color : #666 ; height : 32px ; width : 64px ; border : 0 ; background : url (../img/reg_icons.png ) no-repeat 0 -48px ; font-family : Arial, "宋体" ; } #nav { width : 1200px ; margin : 0 auto; } #register { width : 950px ; margin : 20px auto 0px auto; } #register #reg_form { float : left; text-align : right; font-size : 14px ; color : #666 ; font-weight : 700 ; } #register #reg_form label { margin-right : 10px ; } #register #reg_form p input { height : 38px ; width : 350px ; border : 1px solid #ddd ; font-size : 14px ; color : #666 ; margin-bottom : 6px ; text-indent : 10px ; } #register #reg_form #reg_form_msg { height : 42px ; width : 156px ; background : #f7f7f7 ; font-size : 14px ; border : 1px solid #ddd ; cursor : pointer; } #register #reg_form #reg_form_msg :hover { background-color : #eee ; } #register #reg_form_isCheck { font-size : 10px ; font-weight : 400 ; margin-right : 30px ; } #register #reg_form_isCheck a { text-decoration : none; } #register #reg_form_btn button { height : 50px ; width : 352px ; background : #4490f7 ; border : 0 ; color : white; font-size : 16px ; font-weight : 700 ; border-radius : 3px ; margin-top : 20px ; font-family : Arial, "宋体" ; cursor : pointer; } #register #reg_qrcode { float : right; margin-top : 15px ; margin-right : -10px ; } #copyright { text-align : center; color : #7a77c8 ; font-size : 10px ; margin-top : 520px ; }
演示效果: