为了让自己做的页面不那么难看,最近学了点 css。
一些重要的知识点与技巧汇总如下:
1、location属性:fixed、absolute、relative
position:absolute 脱离原来位置进行定位;相对于最近的有定位的父级进行定位,没有最近,相对于文档进行定位
position:relative 保留原来位置;相对于原来的位置进行定位。一般用 relative 作为参照物;用 absolute 进行定位
position:fixed 显示在浏览器屏幕的固定位置
单行文本垂直居中的实现方法:文本高度 line-height 等于容器高度 height、使用 padding
2、基础点
px:像素,相对单位,pixel 的缩写,垂直屏幕方向最小的点
font-size 指的是字体的高
1em = 1 * font-size,可用于解决动态缩进和居中
3、盒子模型
盒子模型的四大组成部分:外边距(marging)、盒子壁(border)、内边距(padding)、盒子内容(width * height)
4、颜色
颜色属性的表示:颜色英文名称、颜色代码、颜色函数。光学三原色:红绿蓝 rgb、美术三原色:红黄蓝。
5、html 引入 css
html 引入样式的方式:行间样式、页级样式、外部 css 样式
6、css 选择器与权重
css 选择器种类:id 选择器、class 选择器、标签选择器、通配符选择器、属性选择器、伪类选择器、伪元素选择器
css 属性作用的优先级:!important > 行间样式 > id选择器 > class选择器 | 属性选择器 | 伪类选择器 > 标签选择器 > 通配符选择器
css 权重:!important(Infinity)、行间样式(1000)、id选择器(100)、class | 属性 | 伪类选择器(10)、标签 | 伪元素选择器(1)、通配符选择器(0),括号内的数值是 256 进制数,选择器的组合的优先级计算,依赖于选择器的权重累加值的大小
css 组合选择器:派生选择器( div span{} )、直接子元素选择器( div > span {} )、并列选择器( div.demo {} )、分组选择器( div,span {} )、伪类选择器( a:hover {} )
7、display 属性特性
行级元素 | 内联元素:display:inline,内容决定所占位置,不可以通过 css 改变宽高。如标签 span、a、strong、em、del、input
块级元素:display:block,独占一行,可以通过 css 改变宽高。如标签 div、p、ul、li、ol、form、address
行级块元素:display:inline-block,内容决定大小,可以通过 css 改变宽高,未独占一行。如标签 img
凡是带有 inline 属性的元素都有文字特性,会被分割符号(如空格、回车等)分割
8、浮动模型
float:left/right,浮动元素产生了浮动流,块级元素看不到他们,产生了 bfc 的元素和文本类属性(inline-block)的元素以及文本都能看到浮动元素
父级包住浮动元素的处理办法:子元素加块级元素 clear 清除浮动流;父级的伪元素 after 变块级元素,clear 浮动流
clear 必须作用于块级元素
伪元素天生是行级元素
设置 position:absolute、float:left/right,把元素转换为 inline-block
float 早期是为了解决文字环绕图片问题而产生
9、主流浏览器
浏览器是由 shell 和 内核 组成。主流浏览器包括:IE(Trident)、Firefox(Geoko)、Chrome(Webkit/Blink)、Safari(Webkit)、Opera(Presto)
10、margin 塌陷、margin 合并问题
magin 塌陷问题:父子嵌套的元素,垂直方向的 magin,会取最大的值,作用于父元素
margin 塌陷问题解决方法:加 border-top、使用 bfc(block format context) 解决
如何触发 bfc:position:absolute、display:inline-block、float:left/right、overflow:hidden
margin 合并问题:垂直方向两个相邻元素的 margin-bottom 和 margin-top 重叠,显示效果以大的为准
margin 合并问题的解决办法:加一个 wrapper 元素、通过计算 margin 值达到希望的显示效果
实践:
两栏布局
<!DOCTYPE html><html><head> <title>test-2col</title> <meta charset="utf-8"> <style type="text/css"> * { margin: 0; padding: 0; } .right { position: absolute; right: 0; width: 100px; height: 100px; background-color: black; opacity: 0.5; } .left { height: 100px; background-color: green; margin-right: 100px; }</style></head><body> <div class="right"></div> <div class="left"></div></body></html>
菜单栏
<!DOCTYPE html><html><head> <title>test-nav</title> <meta charset="utf-8"> <style type="text/css"> * { margin: 0; padding: 0; } .nav { list-style: none; } .nav::after { content: ""; display: block; clear: both; } .nav .nav-item { float: left; } .nav .nav-item a { display: inline-block; text-decoration: none; color: #f40; font-weight: bold; height: 30px; line-height: 30px; padding: 0 10px; border-radius: 15px; } .nav .nav-item a:hover { color: #fff; background-color: #f40; } </style></head><body> <div class="nav"> <div class="nav-item"> <a href="#">菜单</a> </div> <div class="nav-item"> <a href="#">菜单</a> </div> <div class="nav-item"> <a href="#">菜单</a> </div> </div></body></html>
五环,固定显示在屏幕正中间
<!DOCTYPE html><html><head> <title>5circle</title> <meta charset="utf-8"> <style type="text/css"> * { margin: 0; padding: 0; } .wrapper { height: 186px; width: 380px; position: fixed; left: 50%; top: 50%; margin-top: -93px; margin-left: -190px; } .c { width: 100px; height:100px; border-style: solid; border-width: 10px; border-radius: 50%; position: absolute; } .c1 { border-color: red; } .c2 { border-color: green; margin-left: 130px; } .c3 { border-color: yellow; margin-left: 260px; } .c4 { border-color: blue; margin-left: 65px; margin-top: 65px; } .c5 { border-color: orange; margin-left: 195px; margin-top: 65px; }</style></head><body> <div class="wrapper"> <div class="c c1"></div> <div class="c c2"></div> <div class="c c3"></div> <div class="c c4"></div> <div class="c c5"></div> </div></body></html>
再写这三个实例,还是有所收获的。
全栈了,就更好玩了。
静静地写写博文,撸撸代码,赚杯咖啡钱...