表单控件:
、
、
、
框架标签:
注意
元素早期只分为:行内元素、块级元素 ,区分条件也只有一条:“是独占一行”,如果按照这种分类方式,行内块元素应该算作行内元素。
修改元素显示模式
通过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)
斤斤计较的婚姻到底有多难?
白心之岂必有为
很多人私聊我会问到在哪个人群当中斤斤计较的人最多?我都会回答他,一般婚姻出现问题的斤斤计较的人士会非常多,以我多年经验,在婚姻落的一塌糊涂的人当中,斤斤计较的人数占比在20~30%以上,也就是说10个婚姻出现问题的斤斤计较的人有2-3个有多不减。在婚姻出问题当中,有大量的心理不平衡的、尖酸刻薄的怨妇。在婚姻中仅斤斤计较有两种类型:第一种是物质上的,另一种是精神上的。在物质与精神上抠门已经严重的影响
情绪觉察日记第37天
露露_e800
今天是家庭关系规划师的第二阶最后一天,慧萍老师帮我做了个案,帮我处理了埋在心底好多年的一份恐惧,并给了我深深的力量!这几天出来学习,爸妈过来婆家帮我带小孩,妈妈出于爱帮我收拾东西,并跟我先生和婆婆产生矛盾,妈妈觉得他们没有照顾好我…。今晚回家见到妈妈,我很欣赏她并赞扬她,妈妈说今晚要跟我睡我说好,当我们俩躺在床上准备睡觉的时候,我握着妈妈的手对她说:妈妈这几天辛苦你了,你看你多利害把我们的家收拾得
QQ群采集助手,精准引流必备神器
2401_87347160
其他 经验分享
功能概述微信群查找与筛选工具是一款专为微信用户设计的辅助工具,它通过关键词搜索功能,帮助用户快速找到相关的微信群,并提供筛选是否需要验证的群组的功能。主要功能关键词搜索:用户可以输入关键词,工具将自动查找包含该关键词的微信群。筛选功能:工具提供筛选机制,用户可以选择是否只显示需要验证或不需要验证的群组。精准引流:通过上述功能,用户可以更精准地找到目标群组,进行有效的引流操作。3.设备需求该工具可以
机器学习与深度学习间关系与区别
ℒℴѵℯ心·动ꦿ໊ོ꫞
人工智能 学习 深度学习 python
一、机器学习概述定义机器学习(MachineLearning,ML)是一种通过数据驱动的方法,利用统计学和计算算法来训练模型,使计算机能够从数据中学习并自动进行预测或决策。机器学习通过分析大量数据样本,识别其中的模式和规律,从而对新的数据进行判断。其核心在于通过训练过程,让模型不断优化和提升其预测准确性。主要类型1.监督学习(SupervisedLearning)监督学习是指在训练数据集中包含输入
铭刻于星(四十二)
随风至
69夜晚,绍敏同学做完功课后,看了眼房外,没听到动静才敢从书包的夹层里拿出那个心形纸团。折痕压得很深,都有些旧了,想来是已经写好很久了。绍敏同学慢慢地、轻轻地捏开折叠处,待到全部拆开后,又反复抚平纸张,然后仔细地一字字默看。只是开头的三个字是第一次看到,让她心漏跳了几拍。“亲爱的绍敏:从四年级的时候,我就喜欢你了,但是我一直不敢说,怕影响你学习。六年级的时候听说有人跟你表白,你接受了,我很难过,但
随笔 | 仙一般的灵气
海思沧海
仙岛今天,我看了你全部,似乎已经进入你的世界我不知道,这是否是梦幻,还是你仙一般的灵气吸引了我也许每一个人都要有一份属于自己的追求,这样才能够符合人生的梦想,生活才能够充满着阳光与快乐我不知道,我为什么会这样的感叹,是在感叹自己的人生,还是感叹自己一直没有孜孜不倦的追求只感觉虚度了光阴,每天活在自己的梦中,活在一个不真实的世界是在逃避自己,还是在逃避周围的一切有时候我嘲笑自己,嘲笑自己如此的虚无,
一百九十四章. 自相矛盾
巨木擎天
唉!就这么一夜,林子感觉就像过了很多天似的,先是回了阳间家里,遇到了那么多不可思议的事情儿。特别是小伙伴们,第二次与自己见面时,僵硬的表情和恐怖的气氛,让自己如坐针毡,打从心眼里难受!还有东子,他现在还好吗?有没有被人欺负?护城河里的小鱼小虾们,还都在吗?水不会真的干枯了吧?那对相亲相爱漂亮的太平鸟儿,还好吧!春天了,到了做窝、下蛋、喂养小鸟宝宝的时候了,希望它们都能够平安啊!虽然没有看见家人,也
UI学习——cell的复用和自定义cell
Magnetic_h
ui 学习
目录cell的复用手动(非注册)自动(注册)自定义cellcell的复用在iOS开发中,单元格复用是一种提高表格(UITableView)和集合视图(UICollectionView)滚动性能的技术。当一个UITableViewCell或UICollectionViewCell首次需要显示时,如果没有可复用的单元格,则视图会创建一个新的单元格。一旦这个单元格滚动出屏幕,它就不会被销毁。相反,它被添
微服务下功能权限与数据权限的设计与实现
nbsaas-boot
微服务 java 架构
在微服务架构下,系统的功能权限和数据权限控制显得尤为重要。随着系统规模的扩大和微服务数量的增加,如何保证不同用户和服务之间的访问权限准确、细粒度地控制,成为设计安全策略的关键。本文将讨论如何在微服务体系中设计和实现功能权限与数据权限控制。1.功能权限与数据权限的定义功能权限:指用户或系统角色对特定功能的访问权限。通常是某个用户角色能否执行某个操作,比如查看订单、创建订单、修改用户资料等。数据权限:
学点心理知识,呵护孩子健康
静候花开_7090
昨天听了华中师范大学教育管理学系副教授张玲老师的《哪里才是学生心理健康的最后庇护所,超越教育与技术的思考》的讲座。今天又重新学习了一遍,收获匪浅。张玲博士也注意到了当今社会上的孩子由于心理问题导致的自残、自杀及伤害他人等恶性事件。她向我们普及了一个重要的命题,她说心理健康的一些基本命题,我们与我们通常的一些教育命题是不同的,她还举了几个例子,让我们明白我们原来以为的健康并非心理学上的健康。比如如果
《投行人生》读书笔记
小蘑菇的树洞
《投行人生》----作者詹姆斯-A-朗德摩根斯坦利副主席40年的职业洞见-很短小精悍的篇幅,比较适合初入职场的新人。第一部分成功的职业生涯需要规划1.情商归为适应能力分享与协作同理心适应能力,更多的是自我意识,你有能力识别自己的情并分辨这些情绪如何影响你的思想和行为。2.对于初入职场的人的建议,细节,截止日期和数据很重要截止日期,一种有效的方法是请老板为你所有的任务进行优先级排序。和老板喝咖啡的好
Long类型前后端数据不一致
igotyback
前端
响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问
店群合一模式下的社区团购新发展——结合链动 2+1 模式、AI 智能名片与 S2B2C 商城小程序源码
说私域
人工智能 小程序
摘要:本文探讨了店群合一的社区团购平台在当今商业环境中的重要性和优势。通过分析店群合一模式如何将互联网社群与线下终端紧密结合,阐述了链动2+1模式、AI智能名片和S2B2C商城小程序源码在这一模式中的应用价值。这些创新元素的结合为社区团购带来了新的机遇,提升了用户信任感、拓展了营销渠道,并实现了线上线下的完美融合。一、引言随着互联网技术的不断发展,社区团购作为一种新兴的商业模式,在满足消费者日常需
2021-08-26
影幽
在生活中,女人与男人的感悟往往有所不同。人生最大的舞台就是生活,大幕随时都可能拉开,关键是你愿不愿意表演都无法躲避。在生活中,遇事不要急躁,不要急于下结论,尤其生气时不要做决断,要学会换位思考,大事化小小事化了,把复杂的事情尽量简单处理,千万不要把简单的事情复杂化。永远不要扭曲,别人善意,无药可救。昨天是张过期的支票,明天是张信用卡,只有今天才是现金,要善加利用!执着的攀登者不必去与别人比较自己的
ArcGIS栅格计算器常见公式(赋值、0和空值的转换、补充栅格空值)
研学随笔
arcgis 经验分享
我们在使用ArcGIS时通常经常用到栅格计算器,今天主要给大家介绍我日常中经常用到的几个公式,供大家参考学习。将特定值(-9999)赋值为0,例如-9999.Con("raster"==-9999,0,"raster")2.给空值赋予特定的值(如0)Con(IsNull("raster"),0,"raster")3.将特定的栅格值(如1)赋值为空值,其他保留原值SetNull("raster"==
高级编程--XML+socket练习题
masa010
java 开发语言
1.北京华北2114.8万人上海华东2,500万人广州华南1292.68万人成都华西1417万人(1)使用dom4j将信息存入xml中(2)读取信息,并打印控制台(3)添加一个city节点与子节点(4)使用socketTCP协议编写服务端与客户端,客户端输入城市ID,服务器响应相应城市信息(5)使用socketTCP协议编写服务端与客户端,客户端要求用户输入city对象,服务端接收并使用dom4j
2018-07-23-催眠日作业-#不一样的31天#-66小鹿
小鹿_33
预言日:人总是在逃避命运的路上,与之不期而遇。心理学上有个著名的名词,叫做自证预言;经济学上也有一个很著名的定律叫做,墨菲定律;在灵修派上,还有一个很著名的法则,叫做吸引力法则。这3个领域的词,虽然看起来不太一样,但是他们都在告诉人们一个现象:你越担心什么,就越有可能会发生什么。同样的道理,你越想得到什么,就应该要积极地去创造什么。无论是自证预言,墨菲定律还是吸引力法则,对人都有正反2个维度的影响
【一起学Rust | 设计模式】习惯语法——使用借用类型作为参数、格式化拼接字符串、构造函数
广龙宇
一起学Rust # Rust设计模式 rust 设计模式 开发语言
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、使用借用类型作为参数二、格式化拼接字符串三、使用构造函数总结前言Rust不是传统的面向对象编程语言,它的所有特性,使其独一无二。因此,学习特定于Rust的设计模式是必要的。本系列文章为作者学习《Rust设计模式》的学习笔记以及自己的见解。因此,本系列文章的结构也与此书的结构相同(后续可能会调成结构),基本上分为三个部分
回溯 Leetcode 332 重新安排行程
mmaerd
Leetcode刷题学习记录 leetcode 算法 职场和发展
重新安排行程Leetcode332学习记录自代码随想录给你一份航线列表tickets,其中tickets[i]=[fromi,toi]表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所以该行程必须从JFK开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。例如,行程[“JFK”,“LGA”]与[“JFK”,“LGB
每日一题——第九十题
互联网打工人no1
C语言程序设计每日一练 c语言
题目:判断子串是否与主串匹配#include#include#include//////判断子串是否在主串中匹配//////主串///子串///boolisSubstring(constchar*str,constchar*substr){intlenstr=strlen(str);//计算主串的长度intlenSub=strlen(substr);//计算子串的长度//遍历主字符串,对每个可能得
Python数据分析与可视化实战指南
William数据分析
python python 数据
在数据驱动的时代,Python因其简洁的语法、强大的库生态系统以及活跃的社区,成为了数据分析与可视化的首选语言。本文将通过一个详细的案例,带领大家学习如何使用Python进行数据分析,并通过可视化来直观呈现分析结果。一、环境准备1.1安装必要库在开始数据分析和可视化之前,我们需要安装一些常用的库。主要包括pandas、numpy、matplotlib和seaborn等。这些库分别用于数据处理、数学
《庄子.达生9》
钱江潮369
【原文】孔子观于吕梁,县水三十仞,流沫四十里,鼋鼍鱼鳖之所不能游也。见一丈夫游之,以为有苦而欲死也,使弟子并流而拯之。数百步而出,被发行歌而游于塘下。孔子从而问焉,曰:“吾以子为鬼,察子则人也。请问,‘蹈水有道乎’”曰:“亡,吾无道。吾始乎故,长乎性,成乎命。与齐俱入,与汩偕出,从水之道而不为私焉。此吾所以蹈之也。”孔子曰:“何谓始乎故,长乎性,成乎命?”曰:“吾生于陵而安于陵,故也;长于水而安于
水泥质量纠纷案代理词
徐宝峰律师
贵州领航建设有限公司诉贵州纳雍隆庆乌江水泥有限公司产品质量纠纷案代理词尊敬的审判长、审判员:贵州千里律师事务所接受被告贵州纳雍隆庆乌江水泥有限公司的委托,指派我担任其诉讼代理人,参加本案的诉讼活动。下面,我结合本案事实和相关法律规定发表如下代理意见,供合议庭评议案件时参考:原告应当举证证明其遭受的损失与被告生产的水泥质量的因果关系。首先水泥是一种粉状水硬性无机胶凝材料。加水搅拌后成浆体,能在空气中
2019-12-22-22:30
涓涓1016
今天是冬至,写下我的日更,是因为这两天的学习真的是能量的满满,让我看到了自己,未来另外一种可能性,也让我看到了这两年这几年的过程中我所接受那些痛苦的来源。一切的根源和痛苦都来自于人生,家庭,而你的原生家庭,你的爸爸和妈妈,是因为你这个灵魂在那一刻选择他们作为你的爸爸和妈妈来的,所以你得接受他,你得接纳他,他就是因为他的存在而给你的学习和成长带来这些痛苦,那其实是你必然要经历的这个过程,当你去接纳的
Goolge earth studio 进阶4——路径修改与平滑
陟彼高冈yu
Google earth studio 进阶教程 旅游
如果我们希望在大约中途时获得更多的城市鸟瞰视角。可以将相机拖动到这里并创建一个新的关键帧。camera_target_clip_7EarthStudio会自动平滑我们的路径,所以当我们通过这个关键帧时,不是一个生硬的角度,而是一个平滑的曲线。camera_target_clip_8路径上有贝塞尔控制手柄,允许我们调整路径的形状。右键单击,我们可以选择“平滑路径”,这是默认的自动平滑算法,或者我们可
将cmd中命令输出保存为txt文本文件
落难Coder
Windows cmd window
最近深度学习本地的训练中我们常常要在命令行中运行自己的代码,无可厚非,我们有必要保存我们的炼丹结果,但是复制命令行输出到txt是非常麻烦的,其实Windows下的命令行为我们提供了相应的操作。其基本的调用格式就是:运行指令>输出到的文件名称或者具体保存路径测试下,我打开cmd并且ping一下百度:pingwww.baidu.com>./data.txt看下相同目录下data.txt的输出:如果你再
18-115 一切思考不能有效转化为行动,都TM是扯淡!
成长时间线
7月25号写了一篇关于为什么会断更如此严重的反思,然而,之后日更仅仅维持了一周,又出现了这次更严重的现象。从8月2号到昨天8月6号,5天!又是5天没有更文!虽然这次断更时间和上次一样,那为什么说这次更严重?因为上次之后就分析了问题的原因,以及应该如何解决,按理说应该会好转,然而,没过几天严重断更的现象再次出现,想想,经过反思,问题依然没有解决与改变,这让我有些担忧。到底是哪里出了问题,难道我就真的
山东大学小树林支教调研团青青仓木队——翟晓楠
山东大学青青仓木队
过了半年,又一次启程,又一次回到支教的初心之地。比起上一次的试探与不安,我更多了一丝稳重与熟练。心境、处境也都随着半个学期的过去而变得不同,半个学期中,身体上的,心理上的,太多的逆境让我变得步履维艰,曲曲折折,弯弯绕绕,我仿佛打不起精神,没有胃口,没有动力。感觉走的不顺畅的时候,支教这个旅程,给了我力量。自告奋勇承担起队长这一职务的我,从组织时的复杂和困难的经历,协调各种问题,从无到有,和校长和队
拥有断舍离的心态,过精简生活--《断舍离》读书笔记
爱吃丸子的小樱桃
不知不觉间房间里的东西越来越多,虽然摆放整齐,但也时常会觉得空间逼仄,令人心生烦闷。抱着断舍离的态度,我开始阅读《断舍离》这本书,希望从书中能找到一些有效的方法,帮助我实现空间、物品上的断舍离。《断舍离》是日本作家山下英子通过自己的经历、思考和实践总结而成的,整体内涵也从刚开始的私人生活哲学的“断舍离”升华成了“人生实践哲学”,接着又成为每个人都能实行的“改变人生的断舍离”,从“哲学”逐渐升华成“
直返最高等级与直返APP:无需邀请码的返利新体验
古楼
随着互联网的普及和电商的兴起,直返模式逐渐成为一种流行的商业模式。在这种模式下,消费者通过购买产品或服务,获得一定的返利,并可以分享给更多的人。其中,直返最高等级和直返APP是直返模式中的重要概念和工具。本文将详细介绍直返最高等级的概念、直返APP的使用以及与邀请码的关系。【高省】APP(高佣金领导者)是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,运行三年,稳定可靠。高省APP,
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}$