使用CSS创建图形组件
给HTML 元素着色
语法: 元素选择器 『着色属性』
选择符
标签选择器
属性选择器
代码 | 说明 |
---|---|
[attribute=“value”] | attribute值是value |
[attribute~=“value”] | 有一个是value |
[attribute |= “value”] | 是value或以value-开头的字符串 |
[attribute^=“value”] | 最前是value |
[attribute$=“value”] | 最后是value |
[attribute*=“value”] | value出现过至少一次 |
位置选择器
符号 | 说明 |
---|---|
A > B | 子代选择器,选择A下一层的元素B |
A ~ B | 兄弟选择器,选择与A同层的元素B |
A + B | 相邻兄弟选择器,选择与A相邻的元素B |
A B | 后代选择器,包含选择符 |
其他
符号 | 说明 |
---|---|
:link | 选择所有未访问链接 |
:visited a:visited | 选择所有访问过的链接 |
:active a:active | 选择正在活动链接 |
:hover a:hover | 把鼠标放在链接上的状态 |
:focus input:focus | 选择元素输入后具有焦点 |
:first-letter | 元素的第一个字母 |
:first-line | 元素的第一行 |
:first-child | 选择器匹配属于元素的第一个子元素 |
:before | 在元素之前插入内容 |
:after | 在元素之后插入内容 |
:lang(language) | 为元素的 lang 属性选择一个开始值 |
:nth-child | 第几个,从1开始 :nth-child(an+b)或 :nth-child(n) |
:not() | 排除 |
页面布局
浮动布局
- 纵向对齐: align-items
- 横向对齐
- justify-content (单行)
- 横向对齐 align-content( 多行 )
- 元素 扩展: flex-grow 收缩: flex-shrink 基础长度: flex-basis
兼容
浏览器特殊前缀
- -o- Opera
- -webkit- safari 和 chrome
- -moz- mozilla
增强某样式的权重 !important
单位
- 绝对长度(不推荐) cm,mm,in
- 相对长度 px,em(字体大小) , rem(根元素字体大小),%,vw(视口宽度1%),vh
1 in
=2.54cm
=25.4mm
=72pt
=6pc
=96px
。
页面元素着色
边框
- margin (外边框)
- border (边框)
- padding (内边框)
- width (最里面)
默认这些都在 width(宽度的外面)
|
|
使 width ,height 包含 padding,border 边框
- 边框图像(border-image)
* border-image-source //背景图片源
* border-image-slice //图片边框内偏移
* border-image-width //图片边框的宽度
* border-image-outset //边框图像区域超出边框的量
* border-image-repeat //边框是否适应平铺(repeated)、铺满(rounded)、拉伸(stretched)
- 投影(border-shadow)
- 圆角(border-radius)
- border-top-left-radius:10px;
- border-top-right-radius:10px;
- border-bottom-right-radius:10px;
- border-bottom-left-radius:10px;
盒倒影 box-reflect
box-reflect:none , direction offset, mask-box-image - direction (above | below | left | right) - offset (length | percentage) - mask-box-image (none | url | linear-gradient | radial-gradient | repeating-linear-gradient | repeating-radial-gradient)
-webkit-box-reflect:below 0 -webkit-linear-gradient(transparent,transparent 50%,rgba(255,255,255,.3));
背景
- background-color
- background-image:url(’')
渐变背景
background-image: linear-gradient(direction, color-stop1, color-stop2, …);
|
|
|
|
多背景
background: url() left top no-repeat ,url() right bottom no-repeat;
遮罩
mask-box-image:url() 75 stretch; mask-image: linear-gradient(left, rgba(209, 36, 36, 0), rgba(33, 30, 30, 0) 30%);
文本
- 内容排列 text-align 不光是文字排列 (left,right,center,word-spacing ,letter-spacing)
- line-height 行高
- 文本装饰 text-decoration underline(下划线) overline(上划线) line-through(穿过线) blink(闪烁) inherit
- 字体 font-family 字型 font-family: Times, Times New Roman, Georgia, serif;
- 字体大小 font-size
- 颜色 color (rgb、rgba,hsla) hsl(127,80%,80%)
- 透明度 opacity: 0.6;
- 字符转换 text-transform (uppercase , lowercase, capitalize)
- 粗细、样式、拉伸和装饰(font-weight / font-style / font-stretch / text-decoration)
- 行间距(line-height)、字母间距(letter-spacing)和单词间距(word-spacing)
- 对齐 (text-align)方式
- 缩进 (text-indent)
- 链接样式(:link / :visited / :active / :hover)
- 阴影效果 - text-shadow: 水平偏移 垂直偏移 [模糊半径][颜色]
- 首字母和首行文本(:first-letter / :first-line)
- 响应用户
- 换行模式 white-space (nowrap 不换行, normal 换行)
- word-break: break-all box-shadow: 10px 10px 5px #888888; box-shadow: h-shadow v-shadow blur spread color inset;
值 | 描述 |
---|---|
h-shadow | 必需。水平阴影的位置。允许负值。 |
v-shadow | 必需。垂直阴影的位置。允许负值。 |
blur | 可选。模糊距离。 |
spread | 可选。阴影的尺寸。 |
color | 可选。阴影的颜色。请参阅 CSS 颜色值。 |
inset | 可选。将外部阴影 (outset) 改为内部阴影。 |
链接
- a:link 普通的、未被访问的链接
- a:visited 用户已访问的链接
- a:hover -鼠标指针位于链接的上方
- a:active 链接被点击的时刻
列表
- 列表的项目符号 list-style
- 表格的边框和背景 border-collapse
- 列表橫向顯示 display:none
图像
- 控制图像的大小(display: inline-block)
- 对齐图像
- 背景图像(background / background-image / background-repeat / background-position)
定位 position
- 普通流 默认
- 相对定位 relative 相对于原来所在的位置进行定位,元素占有空间
- 绝对定位 absolute 相对于原来所在的位置进行定位, 元素没有空间
- 固定定位 fixed
- 浮动元素(float / clear) 左右浮动
定位方式
- top 距窗口顶部距离
- right
- bottom
- left
- overflow 溢出
- vertical-align 垂直对齐
- z-index 堆叠顺序
解决子div设float后导致父div无法自动撑开(常用2种)
原因:内部的DIV因为float:left之后,就丢失了clear:both和display:block的样式,所以外部的DIV不会被撑开。
- 1)直接给父div设置 “display: inline-block;”
- 2)在最后添加一个 div 用来清除浮动
<div style="clear:both;"></div>
弹性布局 flexbox
任何一个容器都可以指定为 Flex 布局
|
|
行内元素也可以使用 Flex 布局。
|
|
Webkit 内核的浏览器,必须加上 =-webkit=前缀。
|
|
容器的属性
以下6个属性设置在容器上。
- flex-direction 排列方向 row (默认)| row-reverse | column | column-reverse;
- flex-wrap 截断方式 nowrap | wrap 第一行在上方| wrap-reverse 第一行在下方
- flex-flow flex-direction和 flex-wrap的简写形式
- justify-content 对齐方式 flex-start | flex-end | center | space-between | space-around
- align-items 逆向轴对齐方式 flex-start | flex-end | center | baseline | stretch;
- align-content 定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
- align-content: flex-start | flex-end | center | space-between | space-around | stretch;
项目属性
- order 定义项目的排列顺序。数值越小,排列越靠前,默认为0
- flex-grow 放大比例 如果存在剩余空间,也不放大
- flex-shrink 缩小比例,默认为1,即如果空间不足,该项目将缩小
- flex-basis
- flex flex是 flex-grow, flex-shrink 和 flex-basis的简写,默认值为 (0 1 auto)
- align-self 允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items
- align-self: auto | flex-start | flex-end | center | baseline | stretch
|
|
定义要引入的网络字体 (注意版权)
|
|
媒体查询 (根据不同设备适配不同样式)
|
|
|
|
定义变换 transform
- transform:
- translate(X,Y) 平移多少位置
- rotate() 旋转多少角度 ( 30deg ) 多少圈 (0.5turn 半圈)
- scale(2,4) 缩放
- skew(30deg,20deg) 倾斜
- matrix() 需要六个参数,包含数学函数,旋转、缩放、移动以及倾斜
- transform-origin 允许你改变被转换元素的位置
过渡效果 动画
div{transition:width 2s;} div:hover{width:300px;}
- transition-property 规定应用过渡的 CSS 属性的名称
- transition-duration 定义过渡效果花费的时间
- transition-timing-function 规定过渡效果的时间曲线
- transition-delay 规定过渡效果何时开始
高级功能
viewport (视窗)
- 禁用缩放(手机默认会启用缩放)
|
|
-
设备无关像素(dip device-independent pixel )
width=device-width 可指示网页与屏幕宽度(以设备无关像素为单位)进行匹配。这样,网页就可以重排内容以匹配不同的屏幕尺寸。
移动优先
当用手机打开网页的时候,默认打开的只是相对比较简单的手机版样式,而复杂一些的桌面版的相应样式都在 media-query 中包裹着,所以不会加载,那么这样页面访问速度是最佳的。 参考下面代码
.content {
/* 一些简单的样式,专门为手机而生 */
}
@media screen and (min-width: 400px) {
.content {
/* 为大屏设备设计的比较复杂的样式 */
}
}
滚动条
用 max-width 代替 width 可以防止窗口太小时出现滚动条
溢出用省略号
|
|
CSS中添加 文本内容 content
|
|
灰度
filter: blur(px);模糊度 filter: grayscale(%);灰度 filter: hue-rotate(deg);色相转换 filter: drop-shadow(px px px green);阴影
select option 设置样式
|
|
|
|