表单控件:
、
、
、
框架标签:
注意
元素早期只分为:行内元素、块级元素 ,区分条件也只有一条:“是独占一行”,如果按照这种分类方式,行内块元素应该算作行内元素。
修改元素显示模式
通过CSS
中的display
属性可以修改元素的默认显示模式,常用值如下:
none
:元素会被隐藏 。
block
:元素将作为块级元素 显示。
inline
:元素将作为内联元素 显示。
inline-block
:元素将作为行内块元素 显示。
盒子模型的组成
CSS
会把所有的HTML
元素都看成一个盒子 ,所有的样式也都是基于这个盒子。
margin(外边距) :盒子与外界的距离。
border(边框) :盒子的边框。
padding(内边距) :紧贴内容的补白区域。
content(内容) :元素中文本或后代元素都是它的内容。
盒子大小 = content
+ 左右 padding
+ 左右 border
注意:外边距margin
不会影响盒子的大小,但会影响盒子的位置。
盒子内容区(content)
属性名:width
功能:设置内容区域宽度 属性值:长度
属性名:max-width
功能:设置内容区域的最大宽度 属性值:长度
属性名:min-width
功能:设置内容区域的最小宽度 属性值:长度
属性名:height
功能:设置内容区域的高度 属性值:长度
属性名:max-height
功能:设置内容区域的最大高度 属性值:长度
属性名:min-height
功能:设置内容区域的最小高度 属性值:长度
注意: max-width
、min-width
一般不与width
一起使用。 max-height
、min-height
一般不与height
一起使用。
关于默认宽度
所谓的默认宽度,就是不设置 width
属性时 ,元素呈现出来的宽度。
总宽度 = 父的content
- 自身的左右margin
。
内容区的宽度 = 父的content
- 自身的左右margin
- 自身的左右border
- 自身的左右padding
。
盒子的内边距
属性名:padding-top
功能:上内边距 属性值:长度
属性名:padding-right
功能:右内边距 属性值:长度
属性名:padding-bottom
功能:下内边距 属性值:长度
属性名:padding-left
功能:左内边距 属性值:长度
属性名:padding
功能:复合属性 属性值:长度,可以设置 1~4 个值
padding
复合属性的使用规则:
padding: 10px;
四个方向内边距都是10px
。
padding: 10px 20px;
上10px
,左右20px
。(上下、左右)
padding: 10px 20px 30px;
上10px
,左右20px
,下30px
。(上、左右、下)
padding: 10px 20px 30px 40px
上10px
,右20px
,下30px
,左40px
。(上、右、下、左)
注意点:
padding
的值不能为负数。
行内元素 的左右内边距是没问题的,上下内边距不能完美的设置。
块级元素、行内块元素 ,四个方向内边距 都可以完美设置。
盒子的边框
属性名:border-style
功能:边框线风格、复合了四个方向的边框风格 属性值:solid
:实线、dashed
:虚线、dotted
:点线、double
:双实线 …
属性名:border-width
功能:边框线宽度、复合了四个方向的边框宽度 属性值:长度,默认3px
属性名:border-color
功能:复合属性 属性值:值没有顺序和数量要求。
属性名:border-left
、border-left-style
、border-left-width
、border-left-color
功能:分别设置各个方向的边框 属性值:同上
属性名:border-right
、border-right-style
、border-right-width
、border-right-color
功能:分别设置各个方向的边框 属性值:同上
属性名:border-top
、border-top-style
、border-top-width
、border-top-color
功能:分别设置各个方向的边框 属性值:同上
属性名:border-bottom
、border-bottom-style
、border-bottom-width
、border-bottom-color
功能:分别设置各个方向的边框 属性值:同上
边框相关属性共 20
个。 border-style
、border-width
、border-color
其实也是复合属性。
盒子的外边距
margin 语法
属性名:margin-left
功能:左 外边距 属性值:长度值
属性名:margin-right
功能:右 外边距 属性值:长度值
属性名:margin-top
功能:上 外边距 属性值:长度值
属性名:margin-bottom
功能:下 外边距 属性值:长度值
属性名:margin
功能:复合属性,可以写1~4
个值,规律同padding
(顺时针) 属性名:长度值
margin 注意事项
子元素的margin
,是参考父元素的content
计算的。(因为父亲的content
中承装着子元素)。
上margin
、左margin
:影响自己的位置;下margin
、右margin
:影响后面兄弟元素的位置。
块级元素、行内块元素,均可以完美地设置四个方向的margin
;但行内元素,左右margin
可以完美设置,上下margin
设置无效。
margin
的值也可以是auto
,如果给一个块级元素 设置左右margin
都为auto
,该块级元素会在父元素中水平居中。
margin
的值可以是负值。
margin 塌陷问题
什么是 margin 塌陷?
第一个子元素的上 margin
会作用在父元素上,最后一个子元素的下 margin
会作用在父元素上。
如何解决 margin 塌陷?
方案一:给父元素设置不为 0 的 padding
。
方案二:给父元素设置宽度不为 0 的 border
。
方案三:给父元素设置 css 样式 overflow:hidden
。
margin 合并问题
什么是 margin 合并?
上面兄弟元素的下外边距 和下面兄弟元素的上外边距 会合并,取一个最大的值,而不是相加。
如何解决 margin 合并?
无需解决,布局的时候上下兄弟元素,只给一个设置上下外边距就可以了。
处理内容溢出
属性名:overflow
功能:溢出内容的处理方式 属性值: visible
:显示,默认值 hidden
:隐藏 scroll
:显示滚动条,不论内容是否溢出 auto
:自动显示滚动条,内容不溢出不显示
属性名:overflow-x
功能:水平方向溢出内容的处理方式 属性值:同overflow
属性名:overflow-y
功能:垂直方向溢出内容给的处理方式 属性值:同overflow
注意: 1、overflow-x
、overflow-y
不能一个是hidden
,一个是visible
,是实验性属性,不建议使用。 2、overflow
常用的值是hidden
和auto
,除了能溢出的显示方式,还可以解决很多疑难杂症。
隐藏元素的两种方式
visibility 属性
visibility
属性默认值是show
,如果设置为hidden
,元素会隐藏。
元素看不见了,还占有原来的位置(元素的大小依然保持)。
display 属性
设置display:none
,就可以让元素隐藏。
彻底地隐藏,不但看不见,也不占用任何位置,没有大小宽高。
样式的继承
有些样式会继承,元素如果本身设置了某个样式,就使用本身设置的样式;但如果本身没有设置某个样式,会从父元素开始一级一级继承(优先继承离得近的祖先元素)。
会继承的 css 属性 字体属性、文本属性(除了 vertical-align)、文字颜色 等。
不会继承的 css 属性 边框、背景、内边距、外边距、宽高、溢出方式 等。
一个规律:能继承的属性,都是不影响布局的,简单说:都是和盒子模型没关系的。
默认样式
元素一般都写默认的样式,例如: 1、
元素:下划线、字体颜色、鼠标小手。 2、 ~
元素:文字加粗、文字大小、上下外边距。 3、
元素:上下外边距。 4、
、ol
元素:左内边距。 5、body
元素:8px
外边距(4个方向)。 …
优先级:元素的默认样式 > 继承的样式 ,所以如果要重置元素的默认样式,选择器一定要直接选择器到该元素。
布局小技巧
1、行内元素、行内块元素,可以被父元素当做文本处理。
即:可以像处理文本对齐一样,去处理:行内、行内块在父元素中的对齐。 例如:text-align
、line-height
、text-indent
等。
2、如何让子元素,在父亲中水平居中
:
若子元素为块元素
,给父元素加上:margin: 0 auto;
若子元素为行内元素、行内块元素
,给父元素加上:text-align:center;
3、如何让子元素,在父亲中垂直居中
:
若子元素为块元素
,给子元素加上:margin-top
,值为:(父元素content
- 子元素盒子总高)/
2 若子元素为行内元素、行内块元素
:
让父元素的height
= line-height
,每个子元素都加上:vertical-align:middle;
补充:若想绝对垂直居中,父元素font-size
设置为0
元素之间的空白问题
产生原因: 行内元素、行内块元素,彼此之间的换行会被浏览器解析为一个空白字符。
解决方案: 方案一:去掉换行和空格(不推荐)。 方案二:给父元素设置font-size:0
,再给需要显示的文字的元素,单独设置字体大小(推荐)。
行内块的幽灵空白问题
产生原因: 行内块元素与文本的基线对齐,而文本的基线与文本最低端之间是有一定距离的。
解决方案: 方案一:给行内块设置vertical
,值不为baseline
即可,设置为middel
、bottom
、top
均可。 方案二:若父元素中只有一张图片,设置图片为display:block
。 方案三:给父元素设置font-size:0
。如果该行内块内部还有文本,则需单独设置font-size
。
浮动
浮动的简介
在最初,浮动是用来实现文字环绕图片效果的,现在浮动是主流的页面布局方式之一。
语法 :float: left;
、float: right;
元素浮动后的特点
脱离文档流。
不管浮动前是什么元素,浮动后:默认宽与高都是被内容撑开(尽可能小),而且可以设置宽高。
不会独占一行,可以与其他元素共用一行。
不会margin
合并,也不会margin
塌陷,能够完美的设置四个方向的margin
和padding
。
不会像行内块一样被当做文本处理(没有行内块的空白问题)。
浮动后会有哪些影响
对兄弟元素的影响
后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面;对前面的兄弟无影响。
对父元素的影响
不能撑起父元素的高度,导致父元素高度塌陷,但父元素的宽度依然束缚浮动的元素。
解决浮动产生的影响(清除浮动)
解决方案:
方案一:给父元素指定高度。
方案二:给父元素也设置浮动,带来其他影响。
方案三:给父元素设置overflow:hidden
。
方案四:在所有浮动元素的最后面,添加一个块级元素,并给该块级元素设置clear:both
。
方案五:给浮动元素的父元素,设置伪元素,通过伪元素清除浮动,原理与方案四相同。===>推荐使用
.parent::after {
content : "" ;
display : block;
clear : both;
}
布局中的一个原则:设置浮动的时候,兄弟元素要么全都浮动,要么全都不浮动。
浮动样例
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 浮动小练习 title>
< style>
* {
margin : 0;
padding : 0;
}
.leftfix {
float : left;
}
.rightfix {
float : right;
}
.clearfix::after {
content : '' ;
display : block;
clear : both;
}
.container {
width : 960px;
margin : 0 auto;
text-align : center;
}
.log {
width : 200px;
}
.banner1 {
width : 540px;
margin : 0 10px;
}
.banner2 {
width : 200px;
}
.log,.banner1,.banner2 {
height : 80px;
line-height : 80px;
background-color : #ccc;
}
.menu {
height : 30px;
background-color : #ccc;
margin-top : 10px;
line-height : 30px;
}
.item1,.item2 {
width : 368px;
height : 198px;
line-height : 198px;
border : 1px solid black;
margin-right : 10px;
}
.content {
margin-top : 10px;
}
.item3,.item4,.item5,.item6 {
width : 178px;
height : 198px;
line-height : 198px;
border : 1px solid black;
margin-right : 10px;
}
.bottom {
margin-top : 10px;
}
.item7,.item8,.item9 {
width : 198px;
height : 128px;
line-height : 128px;
border : 1px solid black;
}
.item8 {
margin : 10px 0;
}
.footer {
height : 60px;
background-color : #ccc;
margin-top : 10px;
line-height : 60px;
}
style>
head>
< body>
< div class = " container" >
< div class = " page-header clearfix" >
< div class = " log leftfix" > logo div>
< div class = " banner1 leftfix" > banner1 div>
< div class = " banner2 leftfix" > banner2 div>
div>
< div class = " menu" > 菜单 div>
< div class = " content clearfix" >
< div class = " left leftfix" >
< div class = " top clearfix" >
< div class = " item1 leftfix" > 栏目一 div>
< div class = " item2 leftfix" > 栏目二 div>
div>
< div class = " bottom clearfix" >
< div class = " item3 leftfix" > 栏目三 div>
< div class = " item4 leftfix" > 栏目四 div>
< div class = " item5 leftfix" > 栏目五 div>
< div class = " item6 leftfix" > 栏目六 div>
div>
div>
< div class = " right rightfix" >
< div class = " item7" > 栏目七 div>
< div class = " item8" > 栏目八 div>
< div class = " item9" > 栏目九 div>
div>
div>
< div class = " footer" > 页脚 div>
div>
body>
html>
定位
相对定位
如何设置相对定位? 给元素设置position:relative
即可实现相对定位。 可以使用left
、right
、top
、bottom
四个属性调整位置。
相对定位参考点在哪里? 相对自己原来的位置
相对定位的特点:
不会脱离文档流,元素位置的变化,只是视觉效果上的变化,不会对其他元素产生任何影响。
定位元素的显示层级 比普通元素高,无论什么定位,显示层级都是一样的。
默认规则是:
都发生定位的两个元素,后写的元素会盖在先写的元素之上。
left
不能和right
一起设置,top
和bottom
不能一起设置。
相对定位的元素,也能继续浮动,但不推荐这样做。
相对行为的元素,也能通过margin
调整位置,但不推荐这样做。
注意:绝大多数情况下,相对定位,会与绝对定位配合使用。
绝对定位
如何设置绝对定位 给元素设置position:absolute
即可实现绝对定位。 可以使用left
、right
、top
、bottom
四个属性调整位置。
绝对定位的参考点在哪里? 参考他的包含块
。
什么是包含块?
对于没有脱离文档流的元素:包含块就是父元素。
对于脱离文档流的元素:包含块是第一个拥有定位属性的祖先元素(如果所有祖先都没定位,那包含块就是整个页面)。
绝对定位元素的特点:
脱离文档流,会对后面的兄弟元素、父元素有影响。
left
不能和right
一起设置,top
和bottom
不能一起设置。
绝对定位、浮动不能同时设置,如果同时设置,浮动失效,以定位为主。
绝对定位的元素,也能通过margin
调整位置,但不推荐这样做。
无论是什么元素(行内、行内块、块级)设置为绝对定位之后,都变成了定位元素。
何为定位元素? —— —— 默认宽、高都被内容所撑开,且能自由设置宽高。
固定定位
如何设置为固定定位? 给元素设置position:fixed
即可实现固定定位。 可以使用left
、right
、top
、bottom
四个属性调整位置。
固定定位的参考点在哪里? 参考他的视口
什么是视口?—— —— 对于PC
浏览器来说,视口就是我们看网页的那扇“窗户”。
固定定位元素的特点
脱离文档流,会对后面的兄弟元素、父元素有影响。
left
不能和right
一起设置,top
和bottom
不能一起设置。
固定定位和浮动不能同时设置,如果同时设置,浮动失效,以固定定位为主。
固定定位的元素,也能通过margin
调整位置,但不推荐这样做。
无论是什么元素(行内、行内块、块级)设置为固定定位之后,都变成了定位元素。
粘性定位
如何设置为粘性定位? 给元素设置position:sticky
即可实现粘性定位。 可以使用left
、right
、top
、bottom
四个属性调整位置,不过最常用的是top
值。
粘性定位的参考点在哪里? 离他最近的一个拥有“滚动机制”的祖先元素,即便这个祖先不是最近的真实可滚动祖先。
粘性定位元素的特点
不会脱离文档流,他是一种专门用于窗口滚动时新的定位方式。
最常用的值是top
值。
粘性定位和浮动可以同时设置,但不推荐这样做。
粘性定位的元素,也能通过margin
调整位置,但不推荐这样做。
粘性定位和相对定位的特点基本一致,不同的是:粘性定位可以在元素到达某个位置时将其固定。
定位层级
定位元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的。
如果位置发生重叠,默认情况是:后面的元素,会显示在前面元素之上。
可以通过 css 属性 z-index
调整元素的显示层级。
z-index
的属性值是数字,没有单位,值越大显示层级越高。
只有定位的元素设置 z-index
才有效。
如果 z-index
值大的元素,依然没有覆盖掉 z-index
值小的元素,那么请检查包含块的层级。
定位的特殊应用
注意
发生固定定位、绝对定位后,元素都变成了定位元素,默认宽高被内容撑开,且依然可以设置宽高。
发生相对定位后,元素依然是之前的显示模式。
以下所说的特殊应用,只针对 绝对定位 和 固定定位 的元素,不包括相对定位的元素。
让定位元素的宽充满包含块
块宽想与包含块一致,可以给定位元素同时设置 left
和 right
和 0
。
高度想与包含块一致,top
和 bottom
设置为 0
。
让定位元素在包含块中居中
方案一:
left : 0;
right : 0;
top : 0;
bottom : 0;
margin : auto;
方案二:
left : 50%;
top : 50%;
margin-left : 负的宽度一半;
margin-top : 负的高度一半;
注意:该定位元素必须设置宽高!!
布局
版心
在 PC
端网页中,一般都会有一个固定宽高且水平居中的盒子,来显示网页的主要内容,这是网页的版心 。
版心的宽度一般是 960 ~ 1200
像素之间。
版心可以是一个,也可以是多个。
常用类名
顶部导航条:topbar
页头:header
、page-header
导航:nav
、navigator
、navbar
搜索框:search
、search-box
横幅、广告、宣传图:banner
主要内容:content
、main
侧边栏:aside
、sidebar
页脚:footer
、page-footer
重置默认样式
默认样式
很多元素都有默认样式,比如:
p
元素有默认的上下margin
。
h1~h6
标题也有上下margin
,且字体加粗。
body
元素有默认的8px
外边距。
超链接有默认的文字颜色和下划线。
ul
元素有默认的左pading
。
… …
在早期,元素默认样式,能够让我们快速的绘制网页,但如今网页的设计越来越复杂,内容越来越多,而且很精细,这些默认样式会给我们绘制页面带来麻烦,而且这些默认样式,在不同的浏览器上呈现出来的效果也不一样,所以我们需要重置这些默认样式。
重置默认样式 - 方案一:使用全局选择器
* {
margin : 0;
padding : 0;
......
}
此种方法,在简单案例中可以用一下,但实际开发中不会使用
,因为*
选择器的所有元素,而并不是所有的元素都有默认样式;而且我们重置时,有时候是需要做特定处理的,比如:想让a
元素的文字是灰色,其他元素文字是蓝色。
重置默认样式 - 方案二:reset.css【推荐】
选择到具有默认样式的元素,清空其默认的样式。
经过reset
后的网页,好似“一张白纸 ”,开发人员可根据设计稿,精细的去添加具体的样式。
重置默认样式 - 方案三:Normalize.css
Normalize.css
是一种最新方案,它在清除默认样式的基础上,保留了一些有价值的默认样式。
官网地址:https://necolas.github.io/normalize.css/
相对于reset.css
,Normalize.css
有如下优点:
保护了有价值的默认样式,而不是完全去掉它们。
为大部分HTML元素提供一般化的样式。
新增对HTML5
元素的设置。
对并集选择器的使用比较谨慎,有效避免调试工具杂乱。
备注:Normalize.css
的重置,和reset.css
相比,更加的温和,开发时可根据实际情况进行选择。
HTML5
新增语义化标签
新增布局标签
标签名:header
语义:整个页面或部分区域的头部 单/双标签:双
标签名:footer
语义:整个页面或部分区域的底部 单/双标签:双
标签:nav
语义:导航 单/双标签:双
标签:article
语义:文章、帖子、杂志、新闻、博客、评论等 单/双标签:双
标签:section
语义:页面中的某段文字或文章中的某段文字(里面文字通常里面会包含标题) 单/双标签:双
标签:aside
语义:侧边栏 单/双标签:双
标签:main
语义:文档的主要内容(WHATWG
没有语义,IE
不支持),几乎不用 单/双标签:双
标签:hgroup
语义:包裹连续的标题,如文章主标题、副标题的组合(W3C
将其删除) 单/双标签:双
关于article
和section
:
artical
里面可以有多个section
。
section
强调的是分段或分块,如果你想将一块内容分成几段的时候,可使用section
元素。
article
比section
更强调独立性,一块内容如果比较独立、比较完整,应该使用article
元素。
新增状态标签
meter 标签(电量、磁盘用量等…)
语义:定义已知范围内的标量测量。也被称为gauge
(尺度),双标签,例如:电量、磁盘用量等。
常用属性如下: 属性:high
值:数值 描述:规定高值
属性:low
值:数值 描述:规定低值
属性:max
值:数值 描述:规定最大值
属性:min
值:数值 描述:规定最小值
属性:optimum
值:数值 描述:规定最优值
属性:value
值:数值 描述:规定当前值
< meter max = " 100" min = " 0" value = " 90" low = " 10" high = " 20" optimum = " 90" > meter>
progress标签(进度条)
语义:显示某个任务完成的进度的指示器,一般用于表示进度条,双标签,例如:工作完成进度等。
常用属性如下: 属性:max
值:数值 描述:规定目标值。
属性:value
值:数值 描述:规定当前值
< progress max = " 100" value = " 20" > progress>
示例
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 02_新增状态标签 title>
head>
< body>
< span> 手机电量: span>
< meter max = " 100" min = " 0" value = " 90" low = " 10" high = " 20" optimum = " 90" > meter>
< meter max = " 100" min = " 0" value = " 19" low = " 10" high = " 20" optimum = " 90" > meter>
< meter max = " 100" min = " 0" value = " 9" low = " 10" high = " 20" optimum = " 90" > meter>
< br>
< span> 当前进度: span>
< progress max = " 100" value = " 20" > progress>
body>
html>
新增列表标签
datalist标签(搜索关键词提示)
标签名:datalist
语义:用于搜索框的关键词提示 单/双标签:双
< form action = " #" >
< input type = " text" list = " mydata" >
< button> 搜索 button>
form>
< datalist id = " mydata" >
< option value = " 周杰伦" > 周杰伦 option>
< option value = " 周冬雨" > 周冬雨 option>
< option value = " 马冬梅" > 马冬梅 option>
< option value = " 温兆伦" > 温兆伦 option>
datalist>
details标签(展示问题和答案)
标签名:details
语义:用于展示问题和答案,或对专有名词进行解释 单/双标签:双
标签名:summary
语义:写在details
的里面,用于指定问题或专有名词 单/双标签:双
< details>
< summary> 如何一夜暴富? summary>
< p> 来到尚硅谷学习前端 p>
details>
示例
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 新增列表标签 title>
head>
< body>
< form action = " #" >
< input type = " text" list = " mydata" >
< button> 搜索 button>
form>
< datalist id = " mydata" >
< option value = " 周杰伦" > 周杰伦 option>
< option value = " 周冬雨" > 周冬雨 option>
< option value = " 马冬梅" > 马冬梅 option>
< option value = " 温兆伦" > 温兆伦 option>
datalist>
< hr>
< details>
< summary> 如何一夜暴富? summary>
< p> 来到尚硅谷学习前端 p>
details>
body>
html>
新增文本标签
ruby(文本注音)
标签名:ruby
语义:包裹需要注音的文字 单/双标签:双
标签名:rt
语义:写注音,rt
标签写在ruby
的里面 单/双标签:双
< ruby>
< span> 魑 span>
< rt> chi rt>
ruby>
mark(标记)
标签名:mark
语义:标记 单/双标签:双
注意:W3C
建议mark
用于标记搜索结果中的关键字。
< p> Lorem ipsum < mark> dolor mark> , sit amet consectetur adipisicing elit. Maiores, cupiditate. p>
示例
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 新增文本标签 title>
head>
< body>
< div>
< ruby>
< span> 魑 span>
< rt> chi rt>
ruby>
< ruby>
< span> 魅 span>
< rt> mei rt>
ruby>
div>
< hr>
< p> Lorem ipsum < mark> dolor mark> , sit amet consectetur adipisicing elit. Maiores, cupiditate. p>
body>
html>
表单控件新增属性
placeholder
:提示文字(注意:不是默认值,value
是默认值),适用于文字输入类 的表单控件。
required
:表示该输入项必填,适用于除按钮外 其他表单控件。
autofocus
:自动获取焦点,适用于所有表单控件。
autocomplete
:自动完成,可以设置on
或off
,适用于文字输入类 的表单控件,注意:密码输入框、多行输入框不可用。
pattern
:填写正则表达式,适用于文本输入类表单控件,注意:多行输入不可用,且空的输入框不会验证,往往与required
配合。
input 新增属性值
email
:邮箱 类型的输入框,表单提交时会验证格式,输入为空则不验证格式。
url
:url 类型的输入框,表单提交时会验证格式,输入为空则不验证格式。
number
:数字 类型的输入框,表单提交时会验证格式,输入为空则不验证格式。
search
:搜索 类型的输入框,表单提交时不会验证格式。
tel
:电话 类型的输入框,表单提交时不会验证格式,在移动端使用时,会唤起数字键盘。
range
:范围 选择框,默认值为50 ,表单提交时不会验证格式。
color
:颜色 选择框,默认值为黑色,表单提交时不会验证格式。
date
:日期 选择框,默认值为空,表单提交时不会验证格式。
month
:月份 选择框,默认值为空,表单提交时不会验证格式。
week
:周 选择框,默认值为空,表单提交时不会验证格式。
time
:时间 选择框,默认值为空,表单提交时不会验证格式。
datetime-local
:日期+时间 选择框,默认值为空,表单提交时不会验证格式。
form 标签新增属性
novalidate
:如果给form
标签设置了该属性,表单提交的时候不再进行验证。
新增视频标签
标签用来定义视频,它是双标签。
属性:src
值:URL地址 描述:视频地址
属性:width
值:像素值 描述:设置视频播放器的宽度
属性:height
值:像素值 描述:设置视频播放器的高度
属性值:controls
值:无 描述:向用户显示视频控件(比如播放/暂停按钮)
属性值:muted
值:无 描述:视频静音
属性值:autoplay
值:无 描述:视频自动播放
属性值:loop
值:无 描述:循环播放
属性值:poster
值:URL地址 描述:视频封面
属性值:preload
值:auto
/metadata
/none
描述:视频预加载,如果使用autoplay
,则忽略该属性;none
:不预加载视频;metadata
:仅预先获取视频的元数据(例如长度);auto
:下载这个视频文件,即使用户不希望使用它。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 01_新增视频标签 title>
< style>
video {
width : 600px;
}
style>
head>
< body>
< video src = " ./小电影.mp4" controls muted loop poster = " ./封面.png" preload = " auto" > video>
body>
html>
新增音频标签
标签用来定义音频,它是双标签。
属性:src
值:URL地址 描述:音频地址
属性:controls
值:无 描述:向用户显示音频控件(比如播放/暂停按钮)
属性:autoplay
值:无 描述:音频自动播放
属性:muted
值:无 描述:音频静音
属性:loop
值:无 描述:循环播放
属性:preload
值:auto
/metadata
/none
描述:音频预加载,如果使用autoplay
,则忽略该属性;none
:不预加载音频;metadata
:仅预先获取音频的元数据(例如长度);auto
:可以下载整个音频文件,即使用户不希望使用它。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 02_新增音频标签 title>
head>
< body>
< audio src = " ./小曲.mp3" controls > audio>
body>
html>
新增全局属性(了解)
contenteditable
:表示元素是否可被用户编辑,可选值:true
可编辑、false
不可编辑
draggable
:表示元素可以被拖动,可选值:true
可拖动、false
不可拖动
hidden
:隐藏元素
spellcheck
:规定是否对元素进行拼写和语法检查,可选值:true
检查、false
不检查
contextmenu
:规定元素的上下文菜单,在用户鼠标右键点击元素时显示
data-*
:用于存储页面的私有定制数据
HTML5兼容性处理
添加元信息,让浏览器处于最优渲染模式。
< meta html-equiv = " X-UA-Compatible" content = " IE=Edge" >
< meta name = " renderer" content = " webkit" >
使用html5shiv
让低版本浏览器认识H5
的语义化标签。
扩展
lt
小于 lte
小于等于 gt
大于 gte
大于等于 !
逻辑非
CSS3
新增长度单位
rem
根元素字体大小的倍数,只与根元素字体大小有关。
vm
视口宽度的百分之多少,10vw
就是视口宽度的10%
。
vh
视口高度的百分之多少,10vh
就是视口高度的10%
。
vmax
视口宽高中大的那个的百分之多少。(了解即可)
vmin
视口宽高中小的那个的百分之多少。(了解即可)
新增颜色设置方式
CSS3
新增了三种颜色设置方式,分别是rgba
、hsl
、hsla
,由于之前CSS2
中详细讲解,此处略过。
新增选择器
CSS3
新增的选择器有:动态伪类、目标伪类、语言伪类、UI
伪类、结构伪类、否定伪类、伪元素;这些在CSS2
中已经详细讲解,此处略过。
新增盒子模型相关属性
box-sizing 怪异盒模型
使用box-sizing
属性可以设置盒模型的两种类型
可选值:content-box
含义:width
和height
设置的盒子内容区的大小。(默认值)
可选值:border-box
含义:width
和height
设置的盒子总大小。(怪异盒模型)
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 01_box-sizing title>
< style>
.box1 {
width : 200px;
height : 200px;
background-color : deepskyblue;
padding : 5px;
border : 5px solid black;
margin-bottom : 20px;
}
.box2 {
width : 200px;
height : 200px;
background-color : gray;
padding : 5px;
border : 5px solid black;
box-sizing : border-box;
}
style>
head>
< body>
< div class = " box1" > div>
< div class = " box2" > div>
body>
html>
resize 调整盒子大小
使用resize
属性可以控制是否允许用户调节元素尺寸。
值:none
含义:不允许用户调整元素大小。(默认)
值:both
含义:用户可以调节元素的宽度和高度。
值:horizontal
含义:用户可以调节元素的宽度。
值:vertical
含义:用户可以调节元素的高度。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 02_resize title>
head>
< style>
.box1 {
width : 400px;
height : 400px;
background-color : orange;
resize : both;
overflow : scroll;
}
.box2 {
width : 800px;
height : 600px;
background-color : skyblue;
}
style>
< body>
< div class = " box1" >
< div class = " box2" > 123 div>
div>
body>
html>
box-shadow 调整盒子阴影
使用box-shadow
属性为盒子添加阴影。
语法: box-shadow: h-shadow v-shadow blur spread color inset;
各个值的含义: 值:h-shadow
含义:水平阴影的位置,必须填写,可以为负值
值:v-shadow
含义:垂直阴影的位置,必须填写,可以为负值
值:blur
含义:可选,模糊距离
值:spread
含义:可选,阴影的外延值
值:color
含义:可选,阴影的颜色
值:inset
含义:可选,将外部阴影改为内部阴影
默认值:box-shadow:none
表示没有阴影。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 03_box-shadow title>
head>
< style>
.box1 {
width : 400px;
height : 400px;
background-color : orange;
margin : 0 auto;
margin-top : 100px;
font-size : 40px;
position : relative;
top : 0;
left : 0;
transition : 1s linear all;
}
.box1:hover {
box-shadow : 0px 0px 20px black;
top : -1px;
left : 0;
}
style>
< body>
< div class = " box1" > 你好啊 div>
body>
html>
opacity 调整盒子透明度
opacity
属性能为整个元素添加透明效果,值是0
到1
之间的小数,0
是完全透明,1
表示完全不透明。
opacity
与rgba
的区别? opacity
是一个属性,设置的是整个元素(包括元素里的内容)的不透明度。 rgba
是颜色的设置方式,用于设置颜色,它的透明度,仅仅是调整颜色的透明度。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> Document title>
head>
< style>
.box1 {
width : 200px;
height : 200px;
background-color : orange;
font-size : 40px;
opacity : 0.1;
font-weight : bold;
}
.box2 {
position : relative;
}
h1 {
position : absolute;
top : 100px;
left : 0;
background-color : black;
color : white;
width : 400px;
line-height : 100px;
text-align : center;
font-size : 40px;
opacity : 0.5;
}
style>
< body>
< div class = " box1" > 你好啊 div>
< div class = " box2" >
< img src = " ./你瞅啥.jpg" alt = " " >
< h1> 你瞅啥 h1>
div>
body>
html>
新增背景相关属性
background-origin 设置背景图的原点
语法:
padding-box
: 从padding
区域开始显示背景图像。—— —— 默认值
border-box
:从border
区域开始显示背景图像。
content-box
:从content
区域开始显示背景图像。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 01_background-origin title>
head>
< style>
.box1 {
width : 400px;
height : 400px;
background-color : skyblue;
margin : 0 auto;
font-size : 40px;
padding : 50px;
border : 50px dashed rgba ( 255, 0, 0) ;
background-image : url ( './bg01.jpg' ) ;
background-repeat : no-repeat;
background-origin : border-box;
}
style>
< body>
< div class = " box1" > 你好啊 div>
body>
html>
background-clip 设置背景图的向外裁剪的区域
语法:
border-box
: 从border
区域开始向外裁剪背景。—— —— 默认值
padding-box
: 从padding
区域开始向外裁剪背景。
content-box
: 从content
区域开始向外裁剪背景。
text
: 背景图只呈现在文字上。
注意:若值为text
,那么backgroun-clip
要加上-webkit-
前缀。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_background-clip title>
head>
< style>
.box1 {
width : 400px;
height : 400px;
background-color : skyblue;
margin : 0 auto;
font-size : 40px;
padding : 50px;
border : 50px dashed rgba ( 255, 0, 0) ;
background-image : url ( './bg02.jpg' ) ;
background-repeat : no-repeat;
background-origin : border-box;
background-clip : content-box;
}
style>
< body>
< div class = " box1" > 你好啊 div>
body>
html>
background-size 设置背景图的尺寸
语法:
用长度值指定背景图片大小,不允许负值。
background-size : 300px 200px;
用百分比指定背景图片大小,不允许负值。
background-size : 100% 100%;
auto
:背景图片的真实大小。—— —— 默认值
contain
:将背景图片等比缩放,使背景图片的宽或高,与容器的宽或高相等,再将完整背景图片包含在容器内,但要注意:可能会造成容器里部分区域没有背景图片。
background-size : contain;
cover
:将背景图片等比缩放,直到完全覆盖容器,图片会尽可能全的显示在元素上,但要注意:背景图片有可能显示不完整。—— —— 相对比较好的选择 。
background-size : cover;
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 03_background-size title>
head>
< style>
.box1 {
width : 400px;
height : 400px;
background-color : skyblue;
font-size : 40px;
border : 1px solid black;
background-image : url ( './bg03.jpg' ) ;
background-repeat : no-repeat;
background-size : cover;
}
style>
< body>
< div class = " box1" > div>
body>
html>
background 复合属性
语法:
background : color url repeat position / size origin clip
注意:
origin
和clip
的值如果一样,如果只写一个值,则origin
和clip
都设置;如果设置了两个值,前面的是origin
,后面的clip
。
size
的值必须写在position
值的后面,并且用/
分开。
多背景图
CSS3
允许元素设置多个背景图片
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< title> 05_多背景图 title>
head>
< style>
div {
width : 400px;
height : 400px;
border : 1px solid black;
background : url ( './bg-lt.png' ) no-repeat left top,
url ( './bg-rt.png' ) no-repeat right top,
url ( './bg-lb.png' ) no-repeat left bottom,
url ( './bg-rb.png' ) no-repeat right bottom;
}
style>
< body>
< div> div>
body>
html>
新增边框相关属性
边框圆角
在CSS3
中,使用border-radius
属性可以将盒子变为圆角。
同时设置四个角的圆角:
border-radius : 10px;
分开设置每个角的圆角(几乎不用 ): 属性名:border-top-left-radius
作用:设置左上角圆角半径:一个值是正圆半径,两个值分别是椭圆的x
半径、y
半径。
属性名:border-top-right-radius
作用:设置右上角圆角半径:一个值是正圆半径,两个值分别是椭圆的x
半径、y
半径。
属性名:border-bottom-right-radius
作用:设置右下角圆角半径:一个值是正圆半径,两个值分别是椭圆的x
半径、y
半径。
属性名:border-bottom-left-radius
作用:设置左下角圆角半径:一个值是正圆半径,两个值分别是椭圆的x
半径、y
半径。
分别设置每个圆角,综合写法(几乎不用 ):
border-radius : 左上角x 右上角x 右下角x 左下角x / 左上角y 右上角y 右下角y 左下角y
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 01_边框圆角 title>
head>
< style>
div {
width : 400px;
height : 400px;
border : 2px solid black;
margin : 0 auto;
border-radius : 10%;
}
style>
< body>
< div> div>
body>
html>
边框外轮廓(了解)
outline-width
:外轮廓的宽度。
outline-color
:外轮廓的颜色。
outline-style
:外轮廓的风格。
outline-offset
:设置外轮廓与边框的距离,正负值都可以设置。
注意:outline-offset
不是outline
的子属性,是一个独立的属性。
outline
:复合属性
outline:50px solid blue;
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_边框外轮廓 title>
head>
< style>
.box1 {
width : 400px;
height : 400px;
padding : 10px;
border : 10px solid black;
background-color : gray;
font-size : 40px;
margin : 0 auto;
margin-top : 100px;
outline-offset : 30px;
outline : 20px solid orange;
}
style>
< body>
< div class = " box1" > 你好啊 div>
< div> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Illo adipisci animi, consequuntur dolor voluptate recusandae corrupti dolores est laborum quis? div>
body>
html>
新增文本属性
文本阴影
在CSS3
中,我们可以使用text-shadow
属性给文本添加阴影。
语法:
text-shadow : h-shadow v-shadow blur color;
值:h-shadow
描述:必须写,水平阴影的位置,允许负值。
值:v-shadow
描述:必须写,垂直阴影的位置,允许负值。
值:blur
描述:可选,模糊的距离。
值:color
描述:可选,阴影的颜色。
默认值:text-shadow:none
表示没有阴影。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 01_文本阴影 title>
head>
< style>
body {
background-color : black;
}
h1 {
font-size : 80px;
text-align : center;
color : white;
text-shadow : 0px 0px 20px red;
}
style>
< body>
< h1> 红浪漫洗浴欢迎您的光临 h1>
body>
html>
文本换行
在CSS3
中,我们可以使用white-space
属性设置文本换行方式。
常用值如下: 值:normal
含义:文本超出边界自动换行,文本中的换行被浏览器识别为一个空格。(默认值)
值:pre
含义:原样输出,与pre
标签的效果相同。
值:pre-wrap
含义:在pre
效果的基础上,超出元素边界自动换行。
值:pre-line
含义:在pre
效果的基础上,超出元素边界自动换行,且只识别文本中的换行,空格会忽略。
值:nowrap
含义:强制不换行。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_文本换行 title>
head>
< style>
div {
width : 400px;
height : 400px;
border : 1px solid black;
font-size : 20px;
}
.box1 {
white-space : normal;
}
.box2 {
white-space : pre;
}
.box3 {
white-space : pre-wrap;
}
.box4 {
white-space : pre-line;
}
.box5 {
white-space : nowrap;
}
style>
< body>
< div class = " box1" >
normal
山回路转不见君
雪上空留马行处
山回路转不见君 山回路转不见君山回路转不见君山回路转不见君山回路转不见君山回路转不见君
雪上空留马行处
div>
< br>
< div class = " box2" >
pre
山回路转不见君
雪上空留马行处
山回路转不见君 山回路转不见君山回路转不见君山回路转不见君山回路转不见君山回路转不见君
雪上空留马行处
div>
< br>
< div class = " box3" >
pre-wrap
山回路转不见君
雪上空留马行处
山回路转不见君 山回路转不见君山回路转不见君山回路转不见君山回路转不见君山回路转不见君
雪上空留马行处
div>
< br>
< div class = " box4" >
pre-line
山回路转不见君
雪上空留马行处
山回路转不见君 山回路转不见君山回路转不见君山回路转不见君山回路转不见君山回路转不见君
雪上空留马行处
div>
< br>
< div class = " box5" >
nowrap
山回路转不见君
雪上空留马行处
山回路转不见君 山回路转不见君山回路转不见君山回路转不见君山回路转不见君山回路转不见君
雪上空留马行处
div>
body>
html>
文本溢出
在CSS3
中,我们可以使用text-overflow
属性设置文本内容溢出时的呈现模式。
常用值如下: 值:clip
含义:当内联内容溢出时,将溢出部分裁切掉。(默认值)
值:ellipsis
含义:当内联内容溢出块容器时,将溢出部分替换为 ...
。
注意:要使得text-overflow
属性生效,块容器必须显式定义overflow
为非visible
值,一般都写hidden
。 white-space
为nowrap
值。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 03_文本溢出 title>
head>
< style>
ul {
width : 400px;
height : 400px;
border : 1px solid black;
font-size : 20px;
list-style : none;
padding-left : 0;
padding-right : 10px;
}
li {
margin-bottom : 10px;
overflow : hidden;
white-space : nowrap;
text-overflow : ellipsis;
}
style>
< body>
< ul>
< li> 焦点访谈: 隐形冠军 匠心打造 分毫必争 li>
< li> 我,嫁到日本才发现,女性活得真憋屈,体毛不能有,放屁也不自由1i>
< li> 高洪波无缘!足协盟主热门人选曝光,3选1,冷门人物或成黑马杀出 li>
< li> 《狂飙》爆火以后“疯驴子”被骂上热搜:跪着赚钱丢人吗 li>
< li> 气温猛降15C,冷空气再来袭! 这些地方迎大范围降雨!“虚高”气温大跳水!!!!! i>
ul>
body>
html>
文本修饰
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 04_文本修饰 title>
< style>
h1 {
font-size : 100px;
text-decoration : overline dashed blue;
}
style>
head>
< body>
< h1> 你好啊,欢迎来到尚硅谷学习 h1>
body>
html>
文本描边(极度不常用)
注意:文字描边功能仅webkit
内核浏览器支持。
-webkit-text-stroke-width
:设置文字描边的宽度,写长度值。
-webkit-text-stroke-color
:设置文字描边的颜色,写颜色值。
-webkit-text-stroke
:复合属性,设置文字描边宽度和颜色。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=文本, initial-scale=1.0" >
< title> 05_文本描边 title>
head>
< style>
h1 {
font-size : 100px;
-webkit-text-stroke : 3px red;
color : transparent;
}
style>
< body>
< h1> 先生您好,欢迎光临红浪漫! h1>
body>
html>
新增渐变
线性渐变
多个颜色之间的渐变,默认从上到下 渐变。
background-image : linear-gradient ( red, yellow, green) ;
使用关键词设置线性渐变的方向 。
background-image : linear-gradient ( to right top, red, yellow, green) ;
使用角度设置线性渐变的方向 。
background-image : linear-gradient ( 20deg, red, yellow, green) ;
调整开始渐变的位置 。
background-image : linear-gradient ( red 50px, yellow 100px, green) ;
径向渐变
多个颜色之间的渐变,默认从圆心四散。(注意:不一定是正圆,要看容器本身宽高比)
background-image : radial-gradient ( red, yellow, green) ;
使用关键词调整渐变圆的圆心位置。
background-image : radial-gradient ( at right top, red, yellow, green) ;
使用像素值调整渐变圆的圆心位置。
background-image : radial-gradient ( at 100px 50px, red, yellow, green) ;
调整渐变形状为正圆。
background-image : radial-gradient ( circle, red, yellow, green) ;
调整形状的半径。
background-image : radial-gradient ( 100px, red, yellow, green) ;
background-image : radial-gradient ( 50px 100px, red, yellow, green) ;
调整开始渐变的位置。
background-image : radial-gradient ( red 50px, yellow 100px, green 150px) ;
重复渐变
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 03_重复渐变 title>
head>
< style>
.box {
width : 300px;
height : 200px;
border : 1px solid black;
float : left;
margin-left : 30px;
font-size : 40px;
}
.box1 {
background-image : repeating-linear-gradient ( red 50px, yellow 100px, green 150px) ;
}
style>
< body>
< div class = " box box1" > 重复线性渐变 div>
body>
html>
Web字体
基本用法
可以通过@font-face
指定字体的具体地址,浏览器会自动下载该字体,这样就不依赖用户电脑上的字体了。
语法(简写方式)
@font-face {
font-family : "情书字体" ;
src : url ( './方正手迹.ttf' ) ;
}
语法(高兼容性写法)
@font-face {
font-family : 'atguigu' ;
font-display : swap;
src : url ( 'webfont.eot' ) ;
src : url ( 'webfont.eot?#iefix' ) format ( 'embedded-opentype' ) ,
url ( 'webfont.woff2' ) format ( 'woff2' ) ,
url ( 'webfont.woff' ) format ( 'woff' ) ,
url ( 'webfont.ttf' ) format ( 'truetype' ) ,
url ( 'webfont.svg#webfont' ) format ( 'svg' ) ;
}
定制字体
中文的字体文件很大,使用完整的字体文件不现实,通常针对某几个文字进行单独定制。
可使用阿里Web
字体定制工具:https://www.iconfont.cn/webfont#!/webfont/index
示例
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 01_web字体 title>
head>
< style>
@font-face {
font-family : "情书字体" ;
src : url ( './font1/方正手迹.ttf' ) ;
}
@font-face {
font-family : 'atguigu' ;
font-display : swap;
src : url ( './font2/webfont.eot' ) ;
src : url ( './font2/webfont.eot?#iefix' ) format ( 'embedded-opentype' ) ,
url ( './font2/webfont.woff2' ) format ( 'woff2' ) ,
url ( './font2/webfont.woff' ) format ( 'woff' ) ,
url ( './font2/webfont.ttf' ) format ( 'truetype' ) ,
url ( './font2/webfont.svg#webfont' ) format ( 'svg' ) ;
}
.t1 {
font-size : 100px;
font-family : '情书字体' ;
}
.t2 {
font-size : 100px;
font-family : 'atguigu' ;
}
style>
< body>
< h1 class = " t1" > 春风得意马蹄疾,不信人间有别离 h1>
< h1 class = " t2" > 春风得意马蹄疾,不信人间有别离 h1>
body>
html>
字体图标
相比图片更加清晰。
灵活性高,更方便改变大小、颜色、风格等。
兼容性好,IE
也能支持。
字体图标的具体使用方式,每个平台不尽相同,最好参考平台使用指南。
阿里巴巴图标官网地址:https://www.iconfont.cn/
2D变换
前提:二维坐标系如下图所示
2D位移
2D
位移可以改变元素的位置,具体使用方式如下:
先给元素添加转换属性 transform
编写transform
的具体值,相关可选值如下:
值
含义
translateX
设置水平方向位移,需指定长度值;若指定的是百分比,是参考自身宽度的百分比。
translateY
设置垂直方向位移,需指定长度值;若指定的是百分比,是参考自身高度的百分比。
translate
一个值代表水平方向,两个值代表:水平和垂直方向。
注意点 :
位移与相对定位很相似,都不脱离文档流,不会影响到其它元素。
与相对定位的区别:相对定位的百分比值,参考的是其父元素;定位的百分比值,参考的是其自身。
浏览器针对位移有优化,与定位相比,浏览器处理位移的效率更高。
transform
可以链式编写,例如:transform: translateX(30px) translateY(40px);
位移对行内元素无效。
位移配合定位,可实现元素水平垂直居中.box {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
2D缩放
2D
缩放是指:让元素放大或缩小,具体使用方式如下:
先给元素添加转换属性 transform
编写transform
的具体值,相关可选值如下:
值
含义
scaleX
设置水平方向的缩放比例,值为一个数字,1
表示不缩放,大于1
放大,小于1
缩小。
scaleY
设置垂直方向的缩放比例,值为一个数字,1
表示不缩放,大于1
放大,小于1
缩小。
scale
同时设置水平方向、垂直方向的缩放比例,一个值代表同时设置水平和垂直缩放;两个值分别代表:水平缩放、垂直缩放。
注意点:
scale
的值,是支持写负数的,但几乎不用,因为容易让人产生误解。
借助缩放,可实现小于12px
的文字。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_缩放 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : scale ( 1.5) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
2D旋转
2D
旋转是指:让元素在二维平面内,顺时针旋转或逆时针旋转,具体使用方法如下:
先给元素添加转换属性 transform
编写transform
的具体值,相关可选值如下:
值
含义
rotate
设置旋转角度,需指定一个角度值deg
,正值顺时针,负值逆时针。
注意:rotateZ(20deg)
相当于rotate(20deg)
,当然到了3D
变换的时候,还能写:rotate(x,x,x)
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 03_旋转 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : rotate ( 30deg) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
2D扭曲(了解)
2D
扭曲是指:让元素在二维平面内被“拉扯”,进而“走形”,实际开发几乎不用,了解即可,具体使用方式如下:
先给元素添加转换属性 transform
编写transform
的具体值,相关可选值如下:
值
含义
skewX
设置元素在水平方向扭曲,值为角度值,会将元素的左上角、右下角拉扯
。
skewY
设置元素在垂直方向扭曲,值为角度值,会将元素的左上角、右下角拉扯
。
skew
一个值代表skewX
,两个值分别代表:skewX
、skewY
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 04_扭曲_了解 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : skew ( 30deg, 30deg) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
2D多重变换
多个变换,可以同时使用一个transform
来编写。
注意点:多重变换时,建议最后旋转。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 05_多重变换 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : translate ( 100px, 100px) rotate ( 30deg) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
2D变换原点
元素变换时,默认的原点是元素的中心,使用transform-origin
可以设置变换的原点。
修改变换原点对位移没有影响,对旋转和缩放会产生影响。
如果提供两个值,第一个用于横坐标,第二个用于纵坐标。
如果只提供一个,若是像素值,表示横坐标,纵坐标取50%
;若是关键词,则另一个坐标取50%
。
transform-origin:50% 50%
,变换原点在元素的中心位置,百分比是相对于自身。—— —— 默认值
transform-origin: left top
,变换原点在元素的左上角。
transform-origin: 50px 50px
,变换原点距离元素左上角50px 50px
的位置。
transform-origin:0
,只写一个值的时候,第二个值默认为50%
。
3D变换
开启3D空间
重要原则:元素进行3D
变换的首要操作:父元素
必须开启3D
空间!
使用transform-style
开启3D
空间,可选值如下:
flat
:让子元素位于此元素的二维平面内(2D
空间)—— —— 默认值
preserve-3d
:让子元素位于此元素的三维空间内(3D
空间)
设置景深
何为景深?—— —— 指观察者与z=0
平面的距离,能让发生3D
变换的元素,产生透视效果,看起来更加立体。
使用perspective
设置景深,可选值如下:
none
:不指定透视 —— —— (默认值)
长度值
:指定观察者距离z=0
平面的距离,不允许负值。
注意:perspective
设置给发生3D
变换元素的父元素
!
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 01_3D空间与景深 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
transform-style : preserve-3d;
perspective : 500px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : rotateX ( 50deg) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
透视点位置
所谓透视点位置,就是观察者位置,默认的透视点在元素的中心。
使用perspective-origin
设置观察者位置(透视点的位置),例如:
perspective-origin : 400px 300px;
注意:通常情况下,我们不需要调整透视点位置。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_透视点的位置 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
transform-style : preserve-3d;
perspective : 500px;
perspective-origin : 400px 300px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : rotateX ( 50deg) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
位移
3D
位移是在2D
位移的基础上,可以让元素沿z
轴位移,具体使用方式如下:
先给元素添加转换属性 transform
编写transform
的具体值,3D
相关可选值如下:
值
含义
translateZ
设置z
轴位移,须指定长度值,正值向屏幕外,负值向屏幕里,且不能写百分比。
translate3d
第1个参数对应x
轴,第2个参数对应y
轴,第3个参数对应z
轴,且均不能省略。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_透视点的位置 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
transform-style : preserve-3d;
perspective : 500px;
perspective-origin : 400px 300px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : translate3d ( 50%, 50%, 50%) ;
box-shadow : 0px 0px 10px black;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
旋转
3D
旋转是在2D
旋转的基础上,可以让元素沿x
轴和y
轴旋转,具体使用方式如下:
先给元素添加转换属性 transform
编写transform
的具体值,3D
相关可选值如下:
值
含义
rotateX
设置x
轴旋转角度,需指定一个角度值(deg
),面对x
轴正方向:正值顺时针,负值逆时针。
rotateY
设置y
轴旋转角度,需指定一个角度值(deg
),面对y
轴正方向:正值顺时针,负值逆时针。
rotate3d
前3
个参数分别表示坐标轴x
,y
,z
,第4
个参数表示旋转的角度,参数不允许省略。例如:transform: rotate3d(1,1,1,30deg)
,意思是:x
、y
、z
分别旋转30
度。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 04_旋转 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
transform-style : preserve-3d;
perspective : 500px;
perspective-origin : 400px 300px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : rotate3d ( 1, 1, 1, 30deg) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
缩放
3D
缩放是在2D
缩放的基础上,可以让元素沿z
轴缩放,具体使用方式如下:
先给元素添加转换属性 transform
编写transform
的具体值,3D
相关可选值如下:
值
含义
scaleZ
设置z
轴方向的缩放比例,值为第一个数字,1
表示不缩放,大于1
放大,小于1
缩小。
scale3d
第1个参数对应x
轴,第2个参数对应y
轴,第3个参数对应z
轴,参数不允许省略。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 05_缩放 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
transform-style : preserve-3d;
perspective : 500px;
perspective-origin : 400px 300px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : scale3d ( 1.5, 1.5, 1) rotateY ( 45deg) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
多重变换
多个变换,可以同时使用一个transform
来编写。
transform : translateZ ( 100px) scaleZ ( 3) rotetaY ( 40deg) ;
注意点:多重变换时,建议最后旋转。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 06_多重变换 title>
head>
< style>
.outer {
width : 200px;
height : 200px;
border : 2px solid black;
margin : 0 auto;
margin-top : 100px;
transform-style : preserve-3d;
perspective : 500px;
perspective-origin : 400px 300px;
}
.inner {
width : 200px;
height : 200px;
background-color : deepskyblue;
transform : translateZ ( 100px) scaleZ ( 1) rotateY ( 45deg) ;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 你好啊 div>
div>
body>
html>
过渡
过渡可以在不使用Flash
动画,不使用javaScript
的情况下,让元素从一种样式,平滑过渡为另一种样式。
transition-property 定义哪个属性需要过渡
作用:定义哪个属性需要过渡,只有在该属性中定义的属性(比如宽、高、颜色等)才会有过渡效果。
常用值:
none
:不过渡任何属性。
all
:过渡所有能过渡的属性。
具体某个属性名
,例如:width
、heigth
,若有多个以逗号分隔。
不是所有的属性都能过渡,值为数字,或者值能转为数字的属性,都支持过渡,否则不支持过渡。
常见的支持过渡的属性有:颜色、长度值、百分比、z-index
、opacity
、2D
变换属性、3D
变换属性、阴影。
语法:
transition-property : width, height, background-color;
transition-property : all;
transition-duration 设置过渡的持续时间
作用:设置过渡的持续时间,即:一个状态过渡到另外一个状态耗时多久。
常用值:
0
:没有任何过渡时间 —— —— 默认值。
s
或ms
:秒或毫秒。
列表
:
如果想让所有属性都持续一个时间,那就写一个值。
如果想让每个属性持续不同的时间那就写一个时间的列表。
语法:
transition-duration : 1s, 5s, 1s;
transition-duration : 1s;
transition-property 与 transition-duration 示例
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 01_基本使用 title>
head>
< style>
.box1 {
width : 200px;
height : 200px;
background-color : orange;
opacity : 0.5;
transition-property : all;
transition-duration : 1s;
}
.box1:hover {
width : 400px;
height : 400px;
background-color : green;
transform : rotate ( 45deg) ;
box-shadow : 0px 0px 20px black;
opacity : 1;
}
style>
< body>
< div class = " box1" > div>
body>
html>
transition-delay 过渡延时
作用:指定开始过渡的延时时间,单位:s
或ms
。
transition-timing-function 设置过渡的类型
作用:设置过渡的类型。
常用值:
ease
:平滑过渡 —— —— 默认值
linear
:线性过渡
ease-in
:慢 -> 快
ease-out
:快 -> 慢
ease-in-out
:慢 -> 快 -> 慢
step-start
:等同于steps(1, start)
step-end
:等同于steps(1, end)
steps(integer,?)
:接受两个参数的步进函数,第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start
或end
,指定每一步的值发生变化的时间点。第二个参数默认值为end
。
cubic-bezie(number,number,number,number)
:特定的贝塞尔曲线类型。
在线制作贝塞尔曲线:https://cubic-bezier.com
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_高级使用 title>
head>
< style>
.outer {
width : 1300px;
height : 900px;
border : 1px solid black;
}
.outer:hover .box {
width : 1300px;
}
.box {
width : 200px;
height : 100px;
transition-property : all;
transition-duration : 1s;
}
.box1 {
background-color : skyblue;
transition-timing-function : ease;
}
.box2 {
background-color : orange;
transition-timing-function : linear;
}
.box3 {
background-color : gray;
transition-timing-function : ease-in;
}
.box4 {
background-color : tomato;
transition-timing-function : ease-out;
}
.box5 {
background-color : green;
transition-timing-function : ease-in-out;
}
.box6 {
background-color : purple;
transition-timing-function : step-start;
}
.box7 {
background-color : deepskyblue;
transition-timing-function : step-end;
}
.box8 {
background-color : chocolate;
transition-timing-function : steps ( 20, end) ;
}
.box9 {
background-color : rgb ( 18, 78, 34) ;
transition-timing-function : cubic-bezier ( .88, 1.03, .78, 1.24) ;
}
style>
< body>
< div class = " outer" >
< div class = " box box1" > ease(慢,快,慢) div>
< div class = " box box2" > linear(匀速) div>
< div class = " box box3" > ease-in(慢,快) div>
< div class = " box box4" > ease-out(快,慢) div>
< div class = " box box5" > ease-in-out(慢,快,慢) div>
< div class = " box box6" > step-start不考虑过渡的时间,直接就是终点 div>
< div class = " box box7" > step-end考虑过渡时间,但无过渡效果,过渡时间到了以后,瞬间到达终点 div>
< div class = " box box8" > steps分布过渡 div>
< div class = " box box9" > 贝塞尔曲线 div>
div>
body>
html>
transition 复合属性
如果设置了一个时间,表示duration
;如果设置了两个时间,第一是duration
,第二个是delay
;其他值没有顺序要求。
transition : 1s 1s linear all;
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=, initial-scale=1.0" >
< title> 过渡复合属性 title>
head>
< style>
.outer {
width : 1000px;
height : 100px;
border : 1px solid black;
}
.inner {
width : 100px;
height : 100px;
background-color : orange;
transition : 1s 1s linear all;
}
.outer:hover .inner {
width : 1000px;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > div>
div>
body>
html>
多列布局
作用:专门用于实现类似于报纸的布局。
常用属性如下: column-count
:指定列数,值是数字。 column-width
:指定列宽,值是长度。 columns
:同时指定列宽和列数,复合属性;值没有数量和顺序要求。 column-gap
:设置列边距,值是长度。 column-rule-style
:设置列与列之间边框的风格,值与border-style
一致。 column-rule-width
:设置列与列之间边框的宽度,值是长度。 column-rule-color
:设置列与列之间边框的颜色。 column-rule
:设置列边框,复合属性。 column-span
:指定是否跨列,值:none
、all
。
伸缩盒模型
伸缩盒模型简介
2009
年,W3C
提出了一种新的盒子模型 —— —— Flexible Box
(伸缩盒模型,又称:弹性盒子)。
它可以轻松的控制:元素分布方式、元素对齐方式、元素视觉方式 … …
截止目前,除了在部分IE
浏览器不支持,其他浏览器均已全部支持。
伸缩盒模型的出现,逐渐演变出了一套新的布局方案 —— —— flex
布局。
小贴士:
传统布局是指:基于传统盒状模型,主要靠:display
属性+position
属性+float
属性。
flex
布局目前在移动端应用比较广泛,因为传统布局不能很好的呈现在移动设备上。
伸缩容器、伸缩项目
伸缩容器 :开启了flex
的元素,就是:伸缩容器。
给元素设置:display:flex
或display:inline-flex
,该元素就变为了伸缩容器。
display:inline-flex
很少使用,因为可以给多个伸缩容器的父容器,也设置为伸缩容器。
一个元素可以同时是:伸缩容器、伸缩项目。
伸缩项目 :伸缩容器所有子元素
自动成为了:伸缩项目。
仅伸缩容器的子元素
成为了伸缩项目,孙子元素、重孙子元素等后代,不是伸缩项目。
无论原来是那种元素(块、行内块、行内),一旦成为了伸缩项目,全都会“块状化”。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 01_伸缩容器_伸缩项目 title>
head>
< style>
.outer {
width : 600px;
height : 600px;
background-color : #888;
display : flex;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
}
.inner3 {
display : flex;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 1 div>
< div class = " inner" > 2 div>
< div class = " inner inner3" >
< div> a div>
< div> b div>
< div> c div>
div>
div>
body>
html>
主轴与侧轴
**主轴:**伸缩项目沿着主轴排列,主轴默认是水平的,默认方向是:从左到右(左边是起点,右边是终点)。
**侧轴:**与主轴垂直的就是侧轴,侧轴默认是垂直的,默认方向是:从上到下(上边是起点,下边是终点)。
主轴方向
属性名:flex-direction
常用值如下:
row
:主轴方向水平从左到右 —— —— 默认值。
row-reverse
:主轴方向水平从右到左。
column
:主轴方向垂直从上到下。
column-reverse
:主轴方向垂直从下到上。
注意:改变了主轴的方向,侧轴方向也随之改变。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_主轴方向 title>
head>
< style>
.outer {
width : 1000px;
height : 600px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : column-reverse;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 1 div>
< div class = " inner" > 2 div>
< div class = " inner" > 3 div>
div>
body>
html>
主轴换行方式
属性名:flex-wrap
常用值如下:
nowrap
:默认值,不换行。
wrap
:自动换行,伸缩容器不够自动换行。
wrap-reverse
:反向换行。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 03_主轴换行方式 title>
head>
< style>
.outer {
width : 1000px;
height : 600px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : row;
flex-wrap : wrap-reverse;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 1 div>
< div class = " inner" > 2 div>
< div class = " inner" > 3 div>
< div class = " inner" > 4 div>
< div class = " inner" > 5 div>
< div class = " inner" > 6 div>
< div class = " inner" > 7 div>
< div class = " inner" > 8 div>
< div class = " inner" > 9 div>
< div class = " inner" > 10 div>
< div class = " inner" > 11 div>
div>
body>
html>
flex-flow复合属性
flex-flow
是一个复合属性,复合了flex-direction
和flex-wrap
两个属性,值没有顺序要求。
flex-flow : row wrap;
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 04_flex-flow title>
head>
< style>
.outer {
width : 1000px;
height : 600px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-flow : row wrap;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 1 div>
< div class = " inner" > 2 div>
< div class = " inner" > 3 div>
< div class = " inner" > 4 div>
< div class = " inner" > 5 div>
< div class = " inner" > 6 div>
< div class = " inner" > 7 div>
< div class = " inner" > 8 div>
< div class = " inner" > 9 div>
< div class = " inner" > 10 div>
< div class = " inner" > 11 div>
div>
body>
html>
主轴对齐方式
属性名:justify-content
常用值如下:
flex-start
:主轴起点对齐。—— —— 默认值。
flex-end
:主轴终点对齐。
center
:居中对齐。
space-between
:均匀分布,两端对齐(最常用 )。
space-around
:均匀分布,两端距离是中间距离的一半。
space-evenly
:均匀分布两端距离与中间距离一致。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 05_主轴对齐方式 title>
head>
< style>
.outer {
width : 1000px;
height : 600px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : row;
flex-wrap : wrap;
justify-content : flex-start;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 1 div>
< div class = " inner" > 2 div>
< div class = " inner" > 3 div>
div>
body>
html>
侧轴对齐方式
只有一行的情况
所需属性:align-items
常用值如下:
flex-start
:侧轴的起点对齐。
flex-end
:侧轴的终点对齐。
center
:侧轴的中点对齐。
baseline
:伸缩项目的第一行文字的基线对齐。
stretch
:如果伸缩项目未设置高度,将占满整个容器的高度。—— —— (默认值)。
多行的情况
所需属性:align-content
常用值如下:
flex-start
:与侧轴的起点对齐。
flex-end
:与侧轴的终点对齐。
center
:与侧轴的中点对齐。
space-between
:与侧轴两端对齐,中间平均分布。
space-around
:伸缩项目间的距离相等,比距边缘大一倍。
space-evenly
:在侧轴上完全平分。
stretch
:占满整个侧轴 —— —— 默认值。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 07_侧轴对齐方式_多行 title>
head>
< style>
.outer {
width : 1000px;
height : 900px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : row;
flex-wrap : wrap;
justify-content : flex-start;
align-content : flex-start;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
}
.inner2 {
height : 300px;
}
.inner3 {
height : 100px;
}
style>
< body>
< div class = " outer" >
< div class = " inner" > 1 div>
< div class = " inner inner2" > 2 div>
< div class = " inner inner3" > 3 div>
< div class = " inner" > 4 div>
< div class = " inner" > 5 div>
< div class = " inner" > 6 div>
< div class = " inner" > 7 div>
< div class = " inner" > 8 div>
< div class = " inner" > 9 div>
< div class = " inner" > 10 div>
< div class = " inner" > 11 div>
div>
body>
html>
flex-basis 基准长度
概念:flex-basis
设置的是主轴方向的基准长度 ,会让宽度或高度失效。
备注:主轴横向:宽度失效;主轴纵向:高度失效。
作用:浏览器根据这个属性设置的值,计算主轴上是否有多余空间,默认值auto
,即:伸缩项目的宽或高。
flex-grow(伸)
概念:flex-grow
定义伸缩项目的放大比例,默认为0
,即:纵使主轴存在剩余空间,也不拉伸(放大)。
规则:
若所有伸缩项目的flex-grow
值都为1
,则:它们将等分剩余空间(如果有空间的话)。
若三个伸缩项目的flex-grow
值分别为:1
、2
、3
,则:分别瓜分到:1/6
、2/6
、3/6
的空间。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 10_伸缩项目_伸 title>
head>
< style>
.outer {
width : 1000px;
height : 900px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : row;
flex-wrap : wrap;
justify-content : flex-start;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
flex-grow : 1;
}
.inner2 {
width : 300px;
}
style>
< body>
< div class = " outer" >
< div class = " inner inner1" > 1 div>
< div class = " inner inner2" > 2 div>
< div class = " inner inner3" > 3 div>
div>
body>
html>
flex-shrink(缩)
概念:flex-shrink
定义了项目的压缩比例,默认为1
,即:如果空间不足,该项目将会缩小。
收缩项目的计算,略微复杂一点,我们拿一个场景举例:
例如: 三个收缩项目,宽度分别为:200px
、300px
、200px
,它们的flex-shrink
值分别为:1
、2
、3
若想刚好容纳下三个项目,需要总宽度为700px
,但目前容器只有400px
,还差300px
,所以每个人都要收缩一下才可以放下,具体收缩的值,这样计算:
计算分母:(200*1) + (300*2) + (200*3) = 1400
计算比例:
项目一:(200*1) / 1400 = 比例值1
项目二:(300*2) / 1400 = 比例值2
项目三:(200*3) / 1400 = 比例值3
计算最终收缩大小:
项目一需要收缩:比例值1 * 300
项目二需要收缩:比例值2 * 300
项目三需要收缩:比例值3 * 300
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 11_伸缩项目_缩 title>
head>
< style>
.outer {
width : 600px;
height : 900px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : row;
justify-content : flex-start;
align-content : flex-start;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
flex-grow : 1;
flex-shrink : 1;
}
.inner2 {
width : 300px;
}
style>
< body>
< div class = " outer" >
< div class = " inner inner1" > 1 div>
< div class = " inner inner2" > 2 div>
< div class = " inner inner3" > 3 div>
div>
body>
html>
flex复合属性
flex
是复合属性,复合了:flex-grow
、flex-shrink
、flex-basis
三个属性,默认值为0 1 auto
。
如果写flex:1 1 auto
,则可简写为:flex:auto
如果写flex:1 1 0
,则可简写为:flex:1
如果写flex:0 0 auto
,则可简写为:flex:none
如果写flex:0 1 auto
,则可简写为:flex:0 auto
—— —— 即flex
初始值。
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 12_flex复合属性 title>
head>
< style>
.outer {
width : 600px;
height : 900px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : row;
justify-content : flex-start;
align-content : flex-start;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
flex : 1;
}
style>
< body>
< div class = " outer" >
< div class = " inner inner1" > 1 div>
< div class = " inner inner2" > 2 div>
< div class = " inner inner3" > 3 div>
div>
body>
html>
项目排序
order
属性定义项目的排列顺序。数值越小,排列越靠前,默认为0
。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 13_项目排序与单独对齐 title>
head>
< style>
.outer {
width : 600px;
height : 900px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : row;
justify-content : flex-start;
align-content : flex-start;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
flex : 1 1 0;
}
.inner1 {
order : 3;
}
.inner2 {
order : 2;
}
.inner3 {
order : 1;
}
style>
< body>
< div class = " outer" >
< div class = " inner inner1" > 1 div>
< div class = " inner inner2" > 2 div>
< div class = " inner inner3" > 3 div>
div>
body>
html>
单独对齐
通过align-self
属性,可以单独调整某个伸缩项目的对齐方式。 默认值为auto
,表示继承父元素的align-items
属性。
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 13_项目排序与单独对齐 title>
head>
< style>
.outer {
width : 600px;
height : 900px;
background-color : #888;
margin : 0 auto;
display : flex;
flex-direction : row;
justify-content : flex-start;
align-content : flex-start;
}
.inner {
width : 200px;
height : 200px;
background-color : skyblue;
border : 1px solid black;
box-sizing : border-box;
flex : 1 1 0;
}
.inner2 {
align-self : center;
}
style>
< body>
< div class = " outer" >
< div class = " inner inner1" > 1 div>
< div class = " inner inner2" > 2 div>
< div class = " inner inner3" > 3 div>
div>
body>
html>
响应式布局
媒体类型
值:all
含义:检测所有设备。
值:screen
含义:检测电子屏幕,包括:电脑屏幕、平板屏幕、手机屏幕等。
值:print
含义:检测打印机。
语法:
@media 值 {
}
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 01_媒体查询_媒体类型 title>
head>
< style>
h1 {
width : 600px;
height : 400px;
line-height : 400px;
background-image : linear-gradient ( 30deg, red, yellow, green) ;
margin : 0 auto;
text-align : center;
font-size : 100px;
color : white;
text-shadow : 0 0 10px black;
}
@media print {
h1 {
background : transparent;
}
}
@media screen {
h1 {
font-family : "宋体" ;
}
}
@media all {
h1 {
color : red;
}
}
style>
< body>
body>
< h1> 新年快乐 h1>
html>
媒体特性
值:width
含义:检测视口宽度 。
值:max-width
含义:检测视口最大宽度 。
值:min-width
含义:检测视口最小宽度 。
值:height
含义:检测视口高度 。
值:max-height
含义:检测视口最大高度 。
值:min-height
含义:检测视口最小高度 。
值:device-width
含义:检测设备屏幕的宽度 。
值:max-device-width
含义:检测设备屏幕的最大宽度 。
值:min-device-width
含义:检测设备屏幕的最小宽度 。
值:orientation
含义:检测视口的旋转方向 (是否横屏):1. portrait
视口处于纵向,即高度大于等于宽度;2. landscape
视口处于横向,即宽度大于高度。
语法:
@media ( 值) {
}
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 02_媒体查询_媒体特性 title>
head>
< style>
* {
margin : 0;
padding : 0;
}
h1 {
height : 200px;
background-color : gray;
text-align : center;
line-height : 200px;
font-size : 100px;
}
@media ( width : 800px) {
h1 {
background-color : green;
}
}
@media ( max-width : 700px) {
h1 {
background-color : orange;
}
}
@media ( min-width : 900px) {
h1 {
background-color : deepskyblue;
}
}
style>
< body>
< h1> 你好啊 h1>
body>
html>
运算符
值:and
含义:并且
值:,
或or
含义:或
值:not
含义:否定
值:not
含义:否定
值:only
含义:肯定
示例:
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 03_媒体查询_运算符 title>
head>
< style>
* {
margin : 0;
padding : 0;
}
h1 {
height : 200px;
background-color : gray;
text-align : center;
line-height : 200px;
font-size : 100px;
}
@media only screen {
h1 {
background-color : orange;
}
}
style>
< body>
< h1> 你好啊 h1>
body>
html>
常见阈值
在实际开发中,会将屏幕划分成几个区间,例如:
结合外部样式的用法
用法一
< link rel = " stylesheet" media = " 具体的媒体查询" mystylesheet.css >
用法二
@media screen and ( max-width : 768px) {
}
@media screen and ( min-width : 768px) and ( max-width : 1200px) {
}
BFC
什么是BFC
W3C
上对BFC
的定义:
浮动、绝对定位元素、不是块盒子的块容器(如inline-blocks
、table-cells
和table-captions
),以及overflow
属性的值除visible
以外的块盒,将其内容建立新的块格式化上下文。
MDN
上对BFC
的描述:
块格式化上下文(Block Formatting Context,BFC)
是Web
页面的可视CSS
渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
更加通俗的描述:
BFC
是Block Formatting Context
(块级格式上下文),可以理解成元素的一个"特异功能"
。
该"特异功能"
,在默认的情况下处于关闭状态;当元素满足了某些条件后,该"特异功能"
被激活。
所谓激活"特异功能"
,专业点说就是:该元素创建了BFC
(又称:开启了BFC
)。
开启了BFC能解决什么问题
元素开启BFC
后,其子元素不会再产生margin
塌陷问题。
元素开启BFC
后,自己不会被其他浮动元素所覆盖。
元素开启BFC
后,就算其子元素浮动,元素自身高度也不会塌陷。
如何开启BFC
根元素
浮动元素
绝对定位、固定定位的元素
行内块元素
表格单元格:table
、thead
、tbody
、tfoot
、th
、td
、tr
、caption
overflow
的值不为visible
的块元素
伸缩项目
多列容器
column-span
为all
的元素(即使该元素没有包裹在多列容器中)
display
的值,设置为flow-root
你可能感兴趣的:(前端,学习与实践,HTML5,CSS3)
x86-64汇编语言训练程序与实战
十除以十等于一
本文还有配套的精品资源,点击获取简介:汇编语言是一种低级语言,与机器代码紧密相关,特别适用于编写系统级代码及性能要求高的应用。nasm编译器是针对x86和x86-64架构的汇编语言编译器,支持多种语法风格和指令集。项目Euler提供数学和计算机科学问题,鼓励编程技巧应用,前100个问题的答案可共享。x86-64架构扩展了寄存器数量并引入新指令,提升了数据处理效率。学习汇编语言能够深入理解计算机底层
三菱PLC全套学习资料及应用手册
good2know
本文还有配套的精品资源,点击获取简介:三菱PLC作为工业自动化领域的核心设备,其系列产品的学习和应用需要全面深入的知识。本次资料包为学习者提供从基础到进阶的全方位学习资源,包括各种型号PLC的操作手册、编程指南、软件操作教程以及实际案例分析,旨在帮助用户系统掌握PLC的编程语言、指令系统及在各类工业应用中的实施。1.三菱PLC基础知识入门1.1PLC的基本概念可编程逻辑控制器(PLC)是工业自动化
《玉骨遥》:大司命为什么不杀朱颜?原因没那么简单
windy天意晚晴
《玉骨遥》里,朱颜就是时影的命劫之人。重明与时影早就知道,他们一直瞒着大司命,如今大司命也知道了真相。可是大司命却没有杀朱颜,而是给朱颜下了诛心咒,还说时影的命劫已经破了,真的如此吗?1、计划总是赶不上变化的大司命从目前剧情来说,大司命还不如时影,他信心十足的事情总会有纰漏。他不让时影见命劫之女,结果时影还是遇上了。他想让时影走火入魔,一心复仇,结果时影在朱颜的劝说下放下了仇恨。大司命让时影开山收
日更006 终极训练营day3
懒cici
人生创业课(2)今天的主题:学习方法一:遇到有用的书,反复读,然后结合自身实际,列践行清单,不要再写读书笔记思考这本书与我有什么关系,我在哪些地方能用到,之后我该怎么用方法二:读完书没映像怎么办?训练你的大脑,方法:每读完一遍书,立马合上书,做一场分享,几分钟都行对自己的学习要求太低,要逼自己方法三:学习深度不够怎么办?找到细分领域的榜样,把他们的文章、书籍、产品都体验一遍,成为他们的超级用户,向
day15|前端框架学习和算法
universe_01
前端 算法 笔记
T22括号生成先把所有情况都画出来,然后(在满足什么情况下)把不符合条件的删除。T78子集要画树状图,把思路清晰。可以用暴力法、回溯法和DFS做这个题DFS深度搜索:每个边都走完,再回溯应用:二叉树搜索,图搜索回溯算法=DFS+剪枝T200岛屿数量(非常经典BFS宽度把树状转化成队列形式,lambda匿名函数“一次性的小函数,没有名字”setup语法糖:让代码更简洁好写的语法ref创建:基本类型的
《极简思维》第三部分
小洋苏兮
整理你的人际关系如何改善人际关系?摘录:因为人际关系问题是人们生活中不快乐的主要原因。感想:感觉这个说的挺对,之前我总是埋头学习,不管舍友不管自己的合作伙伴的一些事情,但实际上,这学期关注了之后好多了摘录:“亲密关系与社交会让你健康而快乐。这是基础。太过于关注成就或不太关心人际关系的人都不怎么快乐。基本上来说,人类就是建立在人脉关系上的。”感想:但是如果有时想的太多就不太好,要以一个开放的心态跟别
我不懂什么是爱,但我给你全部我拥有的
香尧
因为怕黑,所以愿意陪伴在夜中行走的人,给他一点点的安全感。因为渴望温柔与爱,所以愿意为别的孩子付出爱与温柔。因为曾遭受侮辱和伤害,所以不以同样的方式施于其他人。如果你向别人出之以利刃,对方还了你爱与包容,真的不要感激他,真的不要赞美他。每一个被人伤害过的人心里都留下了一颗仇恨的种子,他也会想要有一天以眼还眼,以牙还牙。但他未让那颗种子生根发芽,他用一把心剑又一次刺向他自己,用他血荐仇恨,开出一朵温
你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。
霖霖z
打卡人:周云日期:2018年11月09日【日精进打卡第180天】【知~学习】《六项精进》0遍共214遍《通篇》1遍共106遍《大学》2遍共347遍《坚强工作,温柔生活》ok《不抱怨的世界》104-108页《经典名句》你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。【行~实践】一、修身:(对自己个人)1、坚持打卡二、齐家:(对家庭和家人)打扫卫生,接送孩子,洗衣做饭,陪
贫穷家庭的孩子考上985以后会怎样?
Mellisa蜜思言
我出生在一个贫穷的农村家庭,据我妈说,我出生的时候才4斤多,而她生完我以后月子里就瘦到70斤。家里一直很穷,父母都是在菜市场卖菜的,家里还有几亩地种庄稼的。我很小开始就要去帮忙,暑假的生活就是帮忙去卖菜和割稻谷,那时候自己对于割稻谷这种事情有着莫名的恐惧,生怕自己长大以后还是每年都要过着割稻谷这种日子。父母因为忙于生计无暇顾及我的学习,幸好我因为看到他们这样子的生活,内心里有深深的恐惧感,驱使着我
别再讲道理啦,对方听不进去的
方所
我之前写过一篇叫做《你总妄想改变他人》,然后就有朋友跟我说,有一些方法可以改变他人之类的。嗯,是这样,但是任何具体的问题,都要限定好语境,描述清楚前提条件,然后再表达观点,我的这位朋友的说法就犯了一刀切的错误,这样并不能让讨论正常展开(这篇我得先给她看看,不然可能会挨揍)。好了,hhhh,谁让她不能写文章呢,我就来再说一说吧。我前面说过,我们在学到一个道理、学会一种方法之后,总是迫不及待地想要去与
Git 与 GitHub 的对比与使用指南
一念&
其它 git github
Git与GitHub的对比与使用指南在软件开发中,Git和GitHub是两个密切相关但本质不同的工具。下面我将逐步解释它们的定义、区别、核心概念以及如何协同使用,确保内容真实可靠,基于广泛的技术实践。1.什么是Git?Git是一个分布式版本控制系统,由LinusTorvalds于2005年创建。它的核心功能是跟踪代码文件的变化,帮助开发者管理项目历史记录、协作和回滚错误。Git是开源的,可以在本地
英伟达靠什么支撑起了4万亿?AI泡沫还能撑多久?
英伟达市值突破4万亿美元,既是AI算力需求爆发的直接体现,也暗含市场对未来的狂热预期。其支撑逻辑与潜在风险并存,而AI泡沫的可持续性则取决于技术、商业与地缘政治的复杂博弈。⚙️一、英伟达4万亿市值的核心支撑因素技术垄断与生态壁垒硬件优势:英伟达GPU在AI训练市场占有率超87%,H100芯片的FP16算力达1979TFLOPS,领先竞品3-5倍。CUDA生态:400万开发者构建的软件护城河,成为A
ARM 和 AMD 架构的区别
m0_69576880
arm开发 windows 架构
ARM架构和AMD架构是两种不同的计算机处理器架构,它们有以下几个主要区别:设计出发点、兼容性、性能特点、市场定价。设计出发点:①ARM构架:ARM架构最初是为嵌入式系统设计的,旨在提供低功耗和高效能的解决方案。它主要应用于移动设备、嵌入式系统和物联网设备②AMD架构:AMD架构是基于x86架构的扩展,旨在提供与Intel架构兼容的处理器。它主要用于台式机、服务器和工作站等计算机系统。兼容性:AR
2019-06-05
第十七把巴鲁克
今天去实验田里实习,见到了福寿螺真的可怕且牛皮,六级也快来了,说实话还是害怕。我昨天考了环工原理,真的太难了,太烦了,理工科真的难,烦。实验报告还是没写,要抓紧速度抓紧时间,还是应该学会努力学习,远离一些不上进的事物。
Linux系统配置(应用程序)
1风天云月
Linux linux 应用程序 编译安装 rpm http
目录前言一、应用程序概述1、命令与程序的关系2、程序的组成3、软件包封装类型二、RPM1、RPM概述2、RPM用法三、编译安装1、解包2、配置3、编译4、安装5、启用httpd服务结语前言在Linux中的应用程序被视为将软件包安装到系统中后产生的各种文档,其中包括可执行文件、配置文件、用户手册等内容,这些文档被组织为一个有机的整体,为用户提供特定的功能,因此对于“安装软件包”与“安装应用程序”这两
关于流媒体播放器EasyPlayer和EasyPlayerPro的介绍以及其区别
EasyDarwin
EasyDarwin 音视频 ffmpeg 人工智能 大数据 ar
EasyPlayer是一款流媒体播放器系列项目,它支持多种流媒体协议的播放,包括但不限于RTSP、RTMP、HTTP、HLS、UDP、RTP、File等。除此之外,EasyPlayer还支持本地文件播放和多种功能特性,包括本地抓拍、本地录像、播放旋转、多屏播放、倍数播放等。EasyPlayer核心基于ffmpeg,稳定、高效、可靠、可控。随着多年的不断发展和迭代,EasyPlayer基于成功的实践
JVM 内存模型深度解析:原子性、可见性与有序性的实现
练习时长两年半的程序员小胡
JVM 深度剖析:从面试考点到生产实践 jvm java 内存模型
在了解了JVM的基础架构和类加载机制后,我们需要进一步探索Java程序在多线程环境下的内存交互规则。JVM内存模型(JavaMemoryModel,JMM)定义了线程和主内存之间的抽象关系,它通过规范共享变量的访问方式,解决了多线程并发时的数据一致性问题。本文将从内存模型的核心目标出发,详解原子性、可见性、有序性的实现机制,以及volatile、synchronized等关键字在其中的作用。一、J
Flowable 实战落地核心:选型决策与坑点破解
练习时长两年半的程序员小胡
Flowable 流程引擎实战指南 低代码 BPMN 流程引擎 flowable 后端 java
在企业级流程引擎的落地过程中,选型的准确性和坑点的预见性直接决定项目成败。本文聚焦Flowable实战中最关键的“选型决策”与“常见坑点”,结合真实项目经验,提供可落地的解决方案。一、流程引擎选型:从业务本质出发1.1选型的三大核心维度企业在选择流程引擎时,需避免陷入“技术崇拜”,应回归业务本质。评估Flowable是否适用,可从三个维度判断:业务复杂度若流程涉及动态审批链(如按金额自动升级审批)
Flowable 高级扩展:自定义元素与性能优化实战
练习时长两年半的程序员小胡
Flowable 流程引擎实战指南 流程图 flowable BPMN 流程引擎 java
在前五篇文章中,我们从基础概念、流程设计、API实战、SpringBoot集成,到外部系统协同,逐步构建了Flowable的应用体系。但企业级复杂场景中,原生功能往往难以满足定制化需求——比如需要特殊的审批规则网关、与决策引擎联动实现动态路由,或是在高并发场景下优化流程引擎性能。本文将聚焦Flowable的高级扩展能力,详解如何自定义流程元素、集成规则引擎,并掌握大型系统中的性能调优策略。一、自定
互信息:理论框架、跨学科应用与前沿进展
大千AI助手
人工智能 Python # OTHER 人工智能 深度学习 算法 互信息 香农 通信 随机变量
1.起源与核心定义互信息(MutualInformation,MI)由克劳德·香农(ClaudeShannon)在1948年开创性论文《AMathematicalTheoryofCommunication》中首次提出,该论文奠定了现代信息论的基础。互信息用于量化两个随机变量之间的统计依赖关系,定义为:若已知一个随机变量的取值,能为另一个随机变量提供的信息量。数学上,对于离散随机变量XXX和YYY,
Java | 多线程经典问题 - 售票
Ada54
一、售票需求1)同一个票池2)多个窗口卖票,不能出售同一张票二、售票问题代码实现(线程与进程小总结,请戳:Java|线程和进程,创建线程)step1:定义SaleWindow类实现Runnable接口,覆盖run方法step2:实例化SaleWindow对象,创建Thread对象,将SaleWindow作为参数传给Thread类的构造函数,然后通过Thread.start()方法启动线程step3
企业级区块链平台Hyperchain核心原理剖析
boyedu
区块链 区块链 企业级区块链平台 Hyperchain
Hyperchain作为国产自主可控的企业级联盟区块链平台,其核心原理围绕高性能共识、隐私保护、智能合约引擎及可扩展架构展开,通过多模块协同实现企业级区块链网络的高效部署与安全运行。以下从核心架构、关键技术、性能优化、安全机制、应用场景五个维度展开剖析:一、核心架构:分层解耦与模块化设计Hyperchain采用分层架构,将区块链功能解耦为独立模块,支持灵活组合与扩展:P2P网络层由验证节点(VP)
JAVA接口机结构解析
秃狼
SpringBoot 八股文 Java java 学习
什么是接口机在Java项目中,接口机通常指用于与外部系统进行数据交互的中间层,负责处理请求和响应的转换、协议适配、数据格式转换等任务。接口机的结构我们的接口机的结构分为两个大部分,外部接口机和内部接口机,在业务的调度上也是通过mq来实现的,只要的目的就是为了解耦合和做差异化。在接口机中主要的方法就是定时任务,消息的发送和消费,其他平台调用接口机只能提供外部接口机的方法进行调用,外部接口机可以提供消
通义万相2.2:开启高清视频生成新纪元
Liudef06小白
特殊专栏 AIGC 人工智能 人工智能 通义万相2.2 图生视频
通义万相2.2:开启高清视频生成新纪元2025年7月28日,中国AI领域迎来里程碑时刻——通义万相团队正式开源其革命性视频生成模型Wan2.2的核心权重,这标志着开源社区首次获得支持720P高清视频生成的先进模型架构。一、架构革新:混合专家系统1.1MoE视频扩散架构通义万相2.2首次将混合专家(MoE)架构引入视频扩散模型,通过双专家系统实现计算效率与模型容量的平衡:classMoEVideoD
氧惠官方邀请码333777,氧惠邀请码怎么获得?氧惠邀请码有什么套路?
知行导师
问:氧惠邀请码怎么获得?答:氧惠官方邀请码333777返点高佣金高真的高。问:氧惠邀请码有什么套路?答:氧惠官方邀请码333777返点高佣金高真的高。氧惠APP汇聚各大主流电商和生活服务平台优惠,展示全网全品类商品,满足网购爱好者对品质好货与极致性价比的追求,并同时享受大平台购物权益保障。满足用户日常吃喝玩乐衣食住行的聚合APP,独特的商业模式,响应国家号召,为实现全民共富而努力奋斗。氧惠邀请码3
为什么焦虑、抑郁、自残的青少年越来越多?
精神健康
很多家长觉得没缺孩子吃的穿的,他们有安稳的生活,他们有什么可焦虑、抑郁的,但现在的孩子,学习压力越来越大,每天休息的时间越来越少,出现焦虑抑郁是很正常的。从发展的角度看,青少年时期,人的身体、情绪,智力、人格都急剧发展,正从未成熟走向成熟,情绪起伏不定,易冲动,再者,由于缺乏生活经验,以及来自于家长、学校、社会的各种要求和压力,从而不知所措,心中的焦虑、恐惧、彷徨得不到及时的排解,从而导致心理上的
读书打卡《别想太多啦》
chenchen_68ed
第一,世间之事,不去尝试永远不知道其中的奥秘,在尝试中有失败是必然的。如果担心失败,那什么都学不会。第二,经历的失败越多,越会对失败者抱有宽容的态度,“原来如此,我也经历过类似的失败啦,那只是暂时的”。经历越多失败的长者,越能包容别人,这也就是所谓的“越年长越宽容”。成熟的人,就是在众多失败经历中不断学习,并接纳别人的失败。对于他人的小小过失不吹毛求疵,自己的心态会更加平和。在不断失败中学习,让自
2023-01-26
胡喜平
我觉得《可见的学习》一书确实从底层逻辑说清楚了,教学的本质。可是太多术语和概念,一时间难以消化啊。而且知道和懂得有距离,运用就更不行了,需要高手和专家的指导。我需要多听听新课标的讲座了,来反复印证。读论文也有了一点点灵感,明天修改我的论文。
深入理解汇编语言子程序设计与系统调用
网安spinage
汇编语言 开发语言 汇编 算法
本文将全面解析汇编语言中子程序设计的核心技术以及系统调用的实现方法,涵盖参数传递的多种方式、堆栈管理、API调用等关键知识点,并提供实际案例演示。一、子程序设计:参数传递的艺术1.寄存器传参:高效简洁.386.modelflat,stdcalloptioncasemap:none.dataxdd5;定义变量ydd6sumdd?.code;函数定义:addxy1addxy1procpushebpmo
【老房翻新】92平轻奢简约风,将和谐之美融入空间!
没人比我更懂装修
在客厅空间中,设计师于冷静的空间基调中选用了层次感丰富的黄蓝色作为主要跳色,搭配黑白纹理的地毯与单椅,为空间增加了时尚摩登的气息。艺术感的单品突出点亮了空间,绿植的点缀、留白的软饰则增强了空间的呼吸性。点击此处添加图片说明文字点击此处添加图片说明文字设计师力求使每一处的设立都在空间中达到相互间的呼应与制衡,将艺术的跃动之美赋于空间之上,也将空间的和谐之美融于生活之中。点击此处添加图片说明文字点击此
java数字签名三种方式
知了ing
java jdk
以下3钟数字签名都是基于jdk7的
1,RSA
String password="test";
// 1.初始化密钥
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(51
Hibernate学习笔记
caoyong
Hibernate
1>、Hibernate是数据访问层框架,是一个ORM(Object Relation Mapping)框架,作者为:Gavin King
2>、搭建Hibernate的开发环境
a>、添加jar包:
aa>、hibernatte开发包中/lib/required/所
设计模式之装饰器模式Decorator(结构型)
漂泊一剑客
Decorator
1. 概述
若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。
读取磁盘文件txt,并输入String
一炮送你回车库
String
public static void main(String[] args) throws IOException {
String fileContent = readFileContent("d:/aaa.txt");
System.out.println(fileContent);
js三级联动下拉框
3213213333332132
三级联动
//三级联动
省/直辖市<select id="province"></select>
市/省直辖<select id="city"></select>
县/区 <select id="area"></select>
erlang之parse_transform编译选项的应用
616050468
parse_transform 游戏服务器 属性同步 abstract_code
最近使用erlang重构了游戏服务器的所有代码,之前看过C++/lua写的服务器引擎代码,引擎实现了玩家属性自动同步给前端和增量更新玩家数据到数据库的功能,这也是现在很多游戏服务器的优化方向,在引擎层面去解决数据同步和数据持久化,数据发生变化了业务层不需要关心怎么去同步给前端。由于游戏过程中玩家每个业务中玩家数据更改的量其实是很少
JAVA JSON的解析
darkranger
java
// {
// “Total”:“条数”,
// Code: 1,
//
// “PaymentItems”:[
// {
// “PaymentItemID”:”支款单ID”,
// “PaymentCode”:”支款单编号”,
// “PaymentTime”:”支款日期”,
// ”ContractNo”:”合同号”,
//
POJ-1273-Drainage Ditches
aijuans
ACM_POJ
POJ-1273-Drainage Ditches
http://poj.org/problem?id=1273
基本的最大流,按LRJ的白书写的
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
#define INF 0x7fffffff
int ma
工作流Activiti5表的命名及含义
atongyeye
工作流 Activiti
activiti5 - http://activiti.org/designer/update在线插件安装
activiti5一共23张表
Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
A
android的广播机制和广播的简单使用
百合不是茶
android 广播机制 广播的注册
Android广播机制简介 在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。这个广播跟我们传统意义中的电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应
Spring事务传播行为详解
bijian1013
java spring 事务传播行为
在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这
eidtplus operate
征客丶
eidtplus
开启列模式: Alt+C 鼠标选择 OR Alt+鼠标左键拖动
列模式替换或复制内容(多行):
右键-->格式-->填充所选内容-->选择相应操作
OR
Ctrl+Shift+V(复制多行数据,必须行数一致)
-------------------------------------------------------
【Kafka一】Kafka入门
bit1129
kafka
这篇文章来自Spark集成Kafka(http://bit1129.iteye.com/blog/2174765),这里把它单独取出来,作为Kafka的入门吧
下载Kafka
http://mirror.bit.edu.cn/apache/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz
2.10表示Scala的版本,而0.8.1.1表示Kafka
Spring 事务实现机制
BlueSkator
spring 代理 事务
Spring是以代理的方式实现对事务的管理。我们在Action中所使用的Service对象,其实是代理对象的实例,并不是我们所写的Service对象实例。既然是两个不同的对象,那为什么我们在Action中可以象使用Service对象一样的使用代理对象呢?为了说明问题,假设有个Service类叫AService,它的Spring事务代理类为AProxyService,AService实现了一个接口
bootstrap源码学习与示例:bootstrap-dropdown(转帖)
BreakingBad
bootstrap dropdown
bootstrap-dropdown组件是个烂东西,我读后的整体感觉。
一个下拉开菜单的设计:
<ul class="nav pull-right">
<li id="fat-menu" class="dropdown">
读《研磨设计模式》-代码笔记-中介者模式-Mediator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。
* 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
*
* 在我看来,Mediator模式是把多个对象(
常用代码记录
chenjunt3
UI Excel J#
1、单据设置某行或某字段不能修改
//i是行号,"cash"是字段名称
getBillCardPanelWrapper().getBillCardPanel().getBillModel().setCellEditable(i, "cash", false);
//取得单据表体所有项用以上语句做循环就能设置整行了
getBillC
搜索引擎与工作流引擎
comsci
算法 工作 搜索引擎 网络应用
最近在公司做和搜索有关的工作,(只是简单的应用开源工具集成到自己的产品中)工作流系统的进一步设计暂时放在一边了,偶然看到谷歌的研究员吴军写的数学之美系列中的搜索引擎与图论这篇文章中的介绍,我发现这样一个关系(仅仅是猜想)
-----搜索引擎和流程引擎的基础--都是图论,至少像在我在JWFD中引擎算法中用到的是自定义的广度优先
oracle Health Monitor
daizj
oracle Health Monitor
About Health Monitor
Beginning with Release 11g, Oracle Database includes a framework called Health Monitor for running diagnostic checks on the database.
About Health Monitor Checks
Health M
JSON字符串转换为对象
dieslrae
java json
作为前言,首先是要吐槽一下公司的脑残编译部署方式,web和core分开部署本来没什么问题,但是这丫居然不把json的包作为基础包而作为web的包,导致了core端不能使用,而且我们的core是可以当web来用的(不要在意这些细节),所以在core中处理json串就是个问题.没办法,跟编译那帮人也扯不清楚,只有自己写json的解析了.
C语言学习八结构体,综合应用,学生管理系统
dcj3sjt126com
C语言
实现功能的代码:
# include <stdio.h>
# include <malloc.h>
struct Student
{
int age;
float score;
char name[100];
};
int main(void)
{
int len;
struct Student * pArr;
int i,
vagrant学习笔记
dcj3sjt126com
vagrant
想了解多主机是如何定义和使用的, 所以又学习了一遍vagrant
1. vagrant virtualbox 下载安装
https://www.vagrantup.com/downloads.html
https://www.virtualbox.org/wiki/Downloads
查看安装在命令行输入vagrant
2.
14.性能优化-优化-软件配置优化
frank1234
软件配置 性能优化
1.Tomcat线程池
修改tomcat的server.xml文件:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="1200" m
一个不错的shell 脚本教程 入门级
HarborChung
linux shell
一个不错的shell 脚本教程 入门级
建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。 如同其他语言一样
Spring4新特性——核心容器的其他改进
jinnianshilongnian
spring 动态代理 spring4 依赖注入
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
Linux设置tomcat开机启动
liuxingguome
tomcat linux 开机自启动
执行命令sudo gedit /etc/init.d/tomcat6
然后把以下英文部分复制过去。(注意第一句#!/bin/sh如果不写,就不是一个shell文件。然后将对应的jdk和tomcat换成你自己的目录就行了。
#!/bin/bash
#
# /etc/rc.d/init.d/tomcat
# init script for tomcat precesses
第13章 Ajax进阶(下)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Troubleshooting Crystal Reports off BW
blueoxygen
BO
http://wiki.sdn.sap.com/wiki/display/BOBJ/Troubleshooting+Crystal+Reports+off+BW#TroubleshootingCrystalReportsoffBW-TracingBOE
Quite useful, especially this part:
SAP BW connectivity
For t
Java开发熟手该当心的11个错误
tomcat_oracle
java jvm 多线程 单元测试
#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收
测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为
正则表达式大全
yang852220741
html 编程 正则表达式
今天向大家分享正则表达式大全,它可以大提高你的工作效率
正则表达式也可以被当作是一门语言,当你学习一门新的编程语言的时候,他们是一个小的子语言。初看时觉得它没有任何的意义,但是很多时候,你不得不阅读一些教程,或文章来理解这些简单的描述模式。
一、校验数字的表达式
数字:^[0-9]*$
n位的数字:^\d{n}$
至少n位的数字:^\d{n,}$
m-n位的数字:^\d{m,n}$