,可以对他们设置宽高和对齐属性,有些资料可能会称它们为行内块
元素
行内块元素的特点:
和相邻行内元素(行内块)在一行上,但是之间会有空白缝。
默认宽度就是它本身内部的宽度。
高度、行高、外边距以及内边距都可以控制。
显示模式转换
div {
display : inline;
}
span {
display : block;
}
a {
display : inline-block;
}
单行文字垂直居中
原理: 行高的上空隙和下空隙把文字挤到中间了,是如果行高小于盒子高度,文字会偏上,如果行高小于盒子高度,则文字偏下,上下空隙和和平均分布
//盒子高度40px
p {
line-height : 40px
}
背景图片
img {
//引入
background-image : url(images/icon.png) ;
//不平铺
background-repeat : no-repeat;
//background-position : left center
//background-position : 20px 20px
background-position : 20px center
background-attachment : fixed //背景图像固定
}
background:背景颜色,背景图片地址,背景平铺 背景图像滚动,背景图片位置。
body {
background : black url(images/bg.jpg) no-repeat fixed center top;
}
tips:以上没有特定的顺序,只是按这习惯写
img {
background : rgba ( 0,0,0,0.3) 后面必须4个值
}
css的三大特性
p {
color : red;
}
p {
color : blue;
}
//最后p是blue颜色 后面的颜色覆盖前面的颜色
子元素可以继承父元素的样式(text-,font-,line-
这些元素开头的可以继承,以及color
属性)和文字相关的才会继承
body {
font : 12px/1.5
}
div {
font-size : 14px;
}
< body>
< div> div>
body>
选择器
选择器权重
继承 或者*
0,0,0,0
元素选择器
0,0,0,1
类选择器,伪类选择器
0,0,1,0
ID选择器
0,1,0,0
行内样式style=""
1,0,0,0
!important 重要的
无穷大
tips:
权重是由4组数字组成,但是不会有进位。
可以理解为类选择器永远大于元素选择器,id选择器永远大于类选择器,依次类推。
等级判断从左到右,如果某一位数值相同,则判断下一位数值。
可以简单记忆法:通配符合继承权重为0,标签选择器为1,类(伪类)选择器为10,id选择器100,行内样式表为1000,!important
无穷大
继承的权重是0,如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是0
复合选择器会有权重叠加的问题,但注意不会有进位
div ul li ----> 0,0,0,3
.nav ul li ----> 0,0,1,2
a:hover ----> 0,0,1,1
.nav a ----> 0,0,1,1
盒子模型
边框会影响盒子的实际大小我们有两种方案解决:
测量盒子大小的时候,不量边框。
如果测量的时候包含了边框,则需要width/height
减去边框宽度
div {
padding : 10px 20px 30px
}
padding
会影响盒子的实际大小 ,因此我们有以下方案解决: 如果测量的时候包含了边框,则需要width/height
减去边框宽度
margin margin的典型应用,应用于块级
盒子水平居中对齐
div {
//必须有个宽度
width : 900px;
height : 200px;
background-color : red;
//上下没有边距 左右设置auto
margin : 0 auto;
}
嵌套块元素坍塌
当盒子里嵌套着盒子的时候,在里外盒子都设置margin
,会使得边距合并,使得父盒子一起移动了,里面的间距看不到了;
解决方案:
1.可以为父元素定义边框( 会增大盒子) ;
2.可以为父元素定义内边距( 会增大盒子) ;
3.可以为父元素添加overflow : hidden。( 推荐,不增大盒子)
4.浮动、固定、绝对定位的盒子不会有塌陷问题
不同浏览器的不同元素、标签的内外间距都不同,可以使用以下方法来清空,解决问题。
* {
padding : 0;
margin : 0;
}
tips:
padding
有个特殊情况 如果没指定宽度或高度padding
不会撑大盒子的宽或高,孩子如果没有指定宽度或高度,父亲有宽度或高度,孩子设置了padding
也不会撑开盒子,注意以上水平居中方法只属于块级使用方法,
要让行内元素和行内块元素水平居中可以使用在行内元素和行内块元素的父级添加text-align:center
行内元素为了照顾兼容性,尽量只设置左右内外边距,上下设置了也不起作用,但是转换为块级和行内块元素就可以了。
圆角边框(css3)
原理: radius
半径(圆的半径)原理:(椭)圆与边框的交集形成圆角效果
div {
border-radius : 20px;
}
div {
width : 200px;
height : 200px;
border-radius : 50%;
//border-radius : 100px;
}
div {
width : 200px;
height : 100px;
border-radius : 50px;
}
tips: border-radius
后面参数值简写,分别代表左上,右上,右下,左下。
盒子阴影(css3)
div {
width : 200px;
height : 200px;
box-shadow : 10px 10px
}
值
描述
h-shadow
必需。水平阴影的位置。允许负值。
v-shadow
必需。垂直阴影的位置,允许负值。
blur
可选。模糊距离。
spread
可选。阴影的尺寸。
color
可选。阴影的颜色。请参阅css颜色值。可也用rgba
inset
可选。将外部阴影(outset)改为内部阴影。
tips:
默认的是外阴影(outset)
,但是不可以写这个单词,否则导致阴影无效。
盒子阴影不占用空间,不会影响其他盒子排列。
文字阴影(css3)
span {
font-size : 50px;
color : red;
font-weight : 700;
text-shadow : 10px 10px;
}
值
描述
h-shadow
必需。水平阴影的位置。允许负值。
v-shadow
必需。垂直阴影的位置,允许负值。
blur
可选。模糊距离。
color
可选。阴影的颜色。请参阅css颜色值。可也用rgba
浮动
div {
float : left //或者right
}
设置了浮动的元素的最重要特性:
脱离标准普通流的控制(浮) 移动到指定位置(动),(俗称脱标/脱离文档流)
浮动的盒子不再保留原先的位置
无论任何属性的标签都会变成具有行内块元素的特性
设置浮动后就不继承了父类的宽度,根据内容来决定的
浮动的盒子中间是没有缝隙的,是紧挨在一起的
浮动的盒子只会影响浮动盒子后面的标准流不会影响前面的标准流
一个盒子里面有多个盒子,如果其中一个盒子浮动了,那么其他的兄弟也应该浮动起来,以防止引起问题。
浮动的元素不会压住下面标准流盒子内的文字,但会压住下面的盒子,浮动产生的目的最初是为了做文字环绕效果的
清除浮动
由于父级盒子很多情况下,不方便给高度,但是子盒子浮动,脱离文档流又不占有位置,最后父级盒子高度为0时,就会影响下面的标准流盒子,所以需要清除浮动。
.clear {
clear : both;
}
.box {
overflow : hidden;
}
.clearfix:after {
//伪元素必须写的属性
content : '' ;
//插入的元素必须是块级,伪元素是行内
display : block;
//不要看见这个元素
height : 0;
//核心代码清除浮动
clear : both;
//不要看见这个元素
visibility : hidden;
}
.clearfix:before,
.clearfix:after
{
content : '' ;
display : table; //转换为块级,并在同一行上显示
}
.clearfix:after {
clear : both;
}
< div class = ' box clearfix' >
< div class = ' item1' > item1 div>
< div class = ' item2' > item2 div>
< div class = ' clear' > item2 div>
< div>
tips:
浮动元素经常和标准流进行搭配使用,用标准流排列上下位置,之后内部元素采取浮动排列左右位置,符合网页布局第一准则。
需要清除浮动的原因:父级没高度;子盒子浮动了;影响下面布局,我们就应该清除浮动了。
ps切图
tips:遇到要导出多个图层的情况下,要合并图层再转为png。
tips:
cutterman插件要求你的ps必须是完整版,不能是绿色版,所以大家需要安装完整版本,如何判断:看 窗口菜单的扩展功能,如果不是灰色的,可以使用,就是完整版的。
点击进入cutterman官网
定位
相对定位
是元素在移动位置的时候,是相对于它原来的位置来说的,它的特点:
它是相对于自已原来的位置来移动的(移动位置的时候参照点是自己原来的位置)
原来在标准流的位置继续占用,后面的盒子仍然以标准流的方式对待它。(不脱标,继续保留原来位置)因此,相对定位并没有脱标。它最典型的应用是给绝对定位当爹的。
div {
position : relative;
}
div {
position : absolute;
}
子绝父相
:子级是绝对定位的话,父级要用相对定位。
子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。
父盒子需要加定位限制子盒子在父盒子内显示。
父盒子布局时,需要占有位置,因此父亲只能是相对定位。
tips:因为父级需要占有位置,因此是相对定位,子盒子不需要占有位置,则是绝对定位。
.father {
positon : relative;
}
.child {
position : absolute;
}
固定定位
:fixed(重要) 固定定位是元素固定于浏览器可视区的位置,主要使用场景:可以在浏览器页面滚动时元素的位置不会改变。
div {
positon : fixed;
}
固定定位的特点:
以浏览器的可视窗口为参照点移动元素。
跟父元素没有任何关系。
不随滚动条滚动。
固定定位不在占有原先的位置(脱离文档流)。
粘性定位
:可以被认为是相对定位和固定定位的混合。sticky
粘性的语法:
div {
position : sticky;
top : 0;
}
tips: 粘性定位的特点:
以浏览器的可视窗口为参照点移动元素(固定定位特点)
粘性定位占有原先的位置(相对定位特点)
必须添加top、left、right、bottom
其中一个才有效。
跟页面滚动搭配使用,但兼容性差,IE不支持。
div {
position : absolute;
left : 50%;
top : 50%;
margin-left : -100px;
margin-top : -100px;
width : 200px;
height : 200px;
background-color : black;
}
定位的特殊特性
行内元素添加绝对或者固定定位,可以直接设置高度或宽度。
块级元素添加绝对或者固定定位,如果不给宽度和高度,默认大小是内容的大小
浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。
绝对定位(固定定位)会压住下面标准流所有的内容。
脱离文档流后,margin就无效了。
定位叠放次序
在使用定位布局时,可能会出现盒子重叠的情况。此时,可以使用z-index
来控制盒子的前后次序(z轴)
div {
z-index : 1;
}
数值可以是正整数、负整数或0,默认是auto,数值越大,盒子越靠上
如果属性值相同,则按照书写顺序,后来居上
数字后面不能加单位
只有定位的盒子才有z-index
属性
显示隐藏元素
div {
display : none; //隐藏对象
//display : block; //显示对象
}
tips: display
隐藏元素后,不再占有原来的位置。
visibility
属性用于指定一个元素应可见还是隐藏
div {
visibility : visible; //元素可视
//visibility : hidden; //元素隐藏
}
tips: visibility
隐藏元素后,继续占有原来的位置
div {
overflow : hidden; //元素隐藏
}
overflow
属性值
描述
visible
不剪切内容也不添加滚动条
hidden
不显示超过对象尺寸的内容,超出的部分隐藏掉
scroll
不管超出内容否,总是显示滚动条
auto
超出自动显示滚动条,不超出不显示滚动条
tips: 一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局。 但是如果有定位的盒子,请慎用overflow:hidden
因为它会隐藏多余的部分。
高级应用
精灵图(雪碧图)
.box1 {
width : 60px;
height : 60px;
margin : 100px auto;
background : url(images/sprites.png) no-repeat -100px 0;
}
.box2 {
width : 20px;
height : 20px;
margin : 200px;
background : url(images/sprites.png) no-repeat -150px -106px;
}
精灵图缺点:
图片文件还是比较大。
图片本身放大和缩小会失真。
一旦图片制作完毕想要更换非常复杂
tips:背景图片默认是左上角对齐
字体图标
字体图标的出现,主要解决了精灵图的以上问题。可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体
1. 轻量级 : 一个图标字体要比一系列的图像要小,一旦字体加载了,图标就会马上渲染出来,减少了服务器请求。
2. 灵活性:本质其实是文字,可以很随意的改变颜色、产生隐影、透明效果、旋转等
3. 兼容性:几乎支持所有的浏览器
字体图标下载地址
icomoon
字库 下载地址
阿里iconfont
字库(推荐) 下载地址
字体图标的使用
//字体声明
@font-face {
//1. 把下载得到的fonts放到我们项目中。
//2. 打开下载得到的style.css,复制@font-face这一段。
}
//使用
span {
font-family : 'icomoon' ;
color : black;
font-size : 12px;
}
把下载的压缩包里的selection.json
从新上传
tips: 字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。
如果遇到一些结构和样式比较简单的小图标,就用字体图标。
如果遇到一些结构和样式复杂一点的小图片,就用精灵图。
css 三角
网页中常见一些三角型,使用css直接画出来
就可以,不必做成图片或者字体图标。
div {
width : 0;
height : 0;
line-height : 0;
font-size : 0;
border : 50px solid transparent;
border-left-color : red;
}
做出直接三角形
div {
width : 0;
height : 0;
border-color : transparent red transparent transparent;
border-style : solid;
border-width : 100px 50px 0 0;
}
用户界面
< ul>
< li style =' cursor : default' > 我是默认的小白鼠标样式 li>
< li style =' cursor : pointer' > 我是鼠标小手样式 li>
< li style =' cursor : move' > 我是鼠标移动样式 li>
< li style =' cursor : text' > 我是鼠标文本样式 li>
< li style =' cursor : not-allowed' > 我是鼠标禁止样式 li>
ul>
input,textarea {
//取消表单轮廓
outline : none;
}
textarea {
//防止拖拽文本域
resize : none;
}
tips:文本域的开闭合标签最好在一行,防止文本域里面的光标错位。
vertical-align
实现行内块(图片和表单都属于行内块3)和文字垂直居中,如果是其他类型元素可先转换为行内块
div {
display : inline-block;
vertical-align : middle;
}
图片底侧空白缝隙解决
给图片的父亲加边框,会发现图片的底部会有个空白缝隙,是因为图片默认是和我们文字的基线对齐。
把图片转换为块级元素 display:block
;
文字溢出省略号显示
div {
width : 150px;
height : 80px;
background-color : red;
margin : 100px auto;
//要满足以下条件才可以
white-space : nowrap;
overflow : hidden;
text-overflow : ellipsis;
}
div {
width : 150px;
height : 80px;
background-color : red;
margin : 100px auto;
//要满足以下条件才可以
overflow : hidden;
text-overflow : ellipsis;
display : -webkit-box;
-webkit-line-clamp : 2;
-webkit-box-orient : vertical;
}
布局小技巧
margin负值巧妙运用
让每个盒子margin 往左移动-1px 正好压住相邻盒子边框,可以去掉相邻盒子的边框。
如果在某些条件下需要显示被压住的边框 鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有定位,则加相对定位(保留位置)),如果有定位,则加z-index
)
文字围绕浮动元素巧妙利用
利用浮动不会压住文字,实现左图右文
常用的公共兼容代码
* {
//把我们的内外边距全部清0
margin : 0;
padding : 0;
box-sizing : border-box;
}
//em和i协调的文字不倾斜
em,i {
font-style : normal
}
//去掉li的小圆点
li {
list-style : none
}
img {
border : 0;
//取消图片底侧有空白缝隙的问题
vertical-align : middle
}
button {
cursor : pointer
}
a {
color : #666;
//隐藏蓝色的线
text-decoration : none
}
a:hover {
color : #c81623
}
button,input {
font-family : Microsoft YaHei,Heiti SC,tahoma,arial,Hiragino Sans GB,"\5B8B\4F53" ,sans-serif;
border : 0;
outline : none;
}
body {
//css3 抗锯齿性,让文字显示的更加清晰
-webkit-font-smoothing : antialiased;
background-color : #fff;
font : 12px/1.5 Microsoft YaHei,Heiti SC,tahoma,arial,Hiragino Sans
GB,"\5B8B\4F53" ,sans-serif;
color : #666
}
.hide,.none {
display : none
}
.clearfix:after {
visibility : hidden;
clear : both;
display : block;
content : "." ;
height : 0
}
.clearfix {
*zoom : 1
}
//把语义化标签转换为块级,兼容ie9
article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary
{
display : block
}
css3新特性
属性选择器
< input type = " text" value = " 请输入用户名" >
< input type = " password" value = " 请输入用户名" name = " " >
input[value] {
color : red
}
input[type='text'] {
color : red
}
选择器
简介
E[att]
选择具有att属性的E元素
E[att=“val”]
选择具有att属性且属性值等于val的E元素
E[att^=“val”]
匹配具有att属性且值以val开头的E元素
E[att$=“val”]
匹配具有att属性且值以val结尾的E元素
E[att*=“val”]
匹配具有att属性且值中含有val的E元素
tips:类选择器、属性选择器、伪类选择器、权重为10。
结构伪类选择器
结构伪类选择器主要根据文档结构来选择器元素,常用于根据父级选择器里面的子元素
选择器
简介
E:first-child
匹配父元素中的第一个子元素E
E:last-child
匹配父元素中最后一个E元素
E:nth-child(n)
匹配父元素中的第n个子元素E
E:first-of-type
指定类型E的第一个
E:last-of-type
指定类型E的最后一个
E:nth-of-type(n)
指定类型E的第n个
< ul>
< li> 我是第1个孩子 li>
< li> 我是第2个孩子 li>
< li> 我是第3个孩子 li>
< li> 我是第4个孩子 li>
< li> 我是第5个孩子 li>
< li> 我是第6个孩子 li>
< li> 我是第7个孩子 li>
< li> 我是第8个孩子 li>
< li> 我是第9个孩子 li>
< li> 我是第10个孩子 li>
< ul>
< section>
< p> 第一个 p>
< div> 第二个 div>
< div> 第三个 div>
section>
ul li:first-child {
background : pink;
}
//选择ul里面的最后一个孩子
ul li:last-child {
background : pink;
}
ul li:nth-child(n) {
background : blue;
}
section div:nth-of-type(n) {
background : blue;
}
公式
取值
2n
偶数
2n+1
奇数
5n
5 10 15…
n+5
从第5个开始(包含第五个)到最后
-n+5
前5个(包含第5个)…
tips:
nth-child(n)
公式值n从0开始计算
结构伪类选择器一般用于选择父级里面的第几个孩子
nth-child
对父元素里面所有孩子排序选择(序号是固定的)先找到第n个孩子,然后看看是否和E匹配
nth-of-type
对父元素里面指定子元素进行排序选择。先去匹配 E,然后再根据E找第n个孩子
如果是无序列表,nth-child
,用的多。
类选择器、属性选择器、伪类选择器、权重为10。
伪元素选择器
伪元素选择器可以帮助我们利用css
创建新标签元素,而不需要HTML
标签,从而简化HTML
结构。规范写法前面两个::
,单冒号仅用来支持ie8的。
选择器
简介
::before
在元素内部的前面插入内容
::after
在元素内部的后面插入内容
tips:
before
和after
创建一个元素,都是属于行内元素
新创建的这个元素在文档树中是找不到的,所以我们称为伪元素。
语法: element::before {}
before
和after
必须有content
属性
before
和after
都是盒子,before
和after
都在父元素里面创建,before
在父元素内容的前面创建元素,after
在父元素内容的后面插入元素,。
伪元素选择器和标签选择器一样,权重为1
css3盒子模型
css3
中可以通过box-sizing
来指定盒模型,有2个值:即可指定为content-box
、border-box
,这样我们计算盒子大小的方式就发生了改变。
可以分成两种情况:
1. box-sizing : content-box 盒子大小为width+padding+border ( 以前默认的)
2. box-sizing : border-box 盒子大小为width
如果盒子模型我们改为了box-sizing : border-box,那padding和border就不会撑大盒子了( 前提padding和border不会超过width宽度)
filter
, css
属性将模糊或颜色偏移等图形效果应用于元素。
img {
filter : blur ( 5px)
}
calc()
此函数让你在声明css属性值时执行一些计算
//需求我们的子盒子宽度永远比父盒子小30像素
.father
{
width : 300px;
height : 200px;
background-color : red
}
.son {
//子继承父的宽度然后再减去30px
width : calc ( 100%-30px) ;
height : 30px;
background-color : yellow;
}
< div class = " father" >
< div class = " son" >
div>
过渡
transition: 要过渡的属性 花费时间 运动曲线 何时开始;
参数
说明
要过渡的属性
想要变化的css属性,宽度高度 背景颜色 内外边距都可以。如果想要所有的属性都变化过渡,写一个all就可以
花费时间
单位是秒(必须写单位)比如0.5s
运动曲线
默认是ease(可以省略)
何时开始
单位是秒(必须写单位)可以设置延迟触发时间 默认是0s(可以省略)
div
{
width : 200px;
height : 100px;
background-color : red;
//可以用逗号隔开,写多个属性
transition : width .5s ease 1s,height .5s ease 1s;
//可以用all代表多个属性
//transition : all .5s
}
div:hover {
width : 400px;
}
tips:动画写到本身上,谁做动画给谁加
2d转换translate
2D移动是2D转换里的一种功能,可以改变元素在页面中的位置,类似定位。
div {
width : 200px;
height : 200px;
//x,y
transform : translate ( 30px,40px) ;
//横向
transform : translateX ( 30px) ;
//纵向
transform : translateY ( 40px) ;
transform : translateX ( 50%) ;
}
.father {
position : relative;
width : 400px;
height : 400px
}
.son {
position : absolute;
width : 200px;
height : 200px;
left : 50%;
top : 50%;
transform : translate ( -50%,-50%)
}
tips:
定义2D
转换中的移动,沿着X和Y轴移动元素。
translate
最大的优点:不会影响到其他元素的位置。
translate
中的百分比单位是相对于自身元素的translate(50%,50%)
对行内标签没有效果
2d转换rotate
div {
width : 150px;
//顺时针旋转45度
transform : rotate ( 45deg)
}
div {
width : 249px;
height : 35px;
border:1px solid #000;
}
div::after {
content : "" ;
position : absolute;
top : 8px;
right : 15px;
width : 10px
height : 10px;
border-right : 1px solid #000;
border-bottom : 1px solid #000;
transform : rotate ( 45deg) ;
transition : all 0.4s
}
div:hover::after {
transform : rotate ( 225deg) ;
}
div {
transform-origin : x y;
}
.div {
width : 200px;
height : 20px;
border : 1px solid pink;
margin : 100px auto;
overflow : hidden;
}
div::before {
content : "牛逼" ;
display : block;
width : 100%;
height : 100%;
background-color : red;
transform : rotate ( 180deg) ;
//左下角
transform-origin : left bottom;
transition : all 0.4s;
}
div:hover::before {
//鼠标移动上去,还原
transform : rotate ( 0deg) ;
}
< div> div>
tips:
注意后面的参数x和y用空格隔开
x y 默认转换的中心点是元素的中心点(50% 50%)
可以给x y 设置像素 或者方位名词 (top bottom left right center )
2d转换scale
缩放,顾名思义,可以放大和缩小。
div {
width : 200px;
height : 200px;
background-color : red;
margin : 100px auto;
transform-origin : left bottom;
}
div:hover {
//transform : scale ( x,y) ;
//修改了宽度为原来的2倍,高度不变。
transform : scale ( 2,1)
}
tips:
我们可以进行缩小 小于1 就是缩放
不影响其他的盒子,以前的控制宽、高会影响其他盒子。
可以设置缩放的中心点。
div {
//不让放大时超出范围
overflow : hidden
float : left;
margin : 10px;
}
div img {
transition : all .4s
}
div img:hover {
transform : scale ( 1,1) ;
}
div {
width : 200px;
height : 200px;
background-color : pink;
transition : all .5s;
}
div:hover {
transform : translate ( 150px,50px) rotate ( 180deg) ;
}
tips:
同时使用多个转换,其格式为: transform:translate() rotate() scale()
…等
其顺序会影响转换的效果。(先旋转会改变坐标轴方向)
当我们同时又位移和其他属性的时候,记得要将位移放到最前。
动画(animation)
动画是css3
中最具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。 相比较过滤,动画可以实现更多变化,更多控制,连续自动播放等效果。
@keyframes move {
0% {
transform : translate ( 0,0 ) ;
}
25% {
transform : translate ( 1000px,0) ;
}
50% {
transform : translate ( 1000px,500px) ;
}
75% {
transform : translate ( 0,500px) ;
}
100% {
transform : translate ( 0,0) ;
}
}
div {
width : 200px;
height : 200px;
background-color : pink;
animation-name : move;
animation-duration : 10s
}
tips:
0% 是动画的开始,100%是动画的完成。这样的规则就是动画序列。
在@keyframes
中规定某项css样式,就能创建由当前样式逐渐改为新样式的动画效果。
动画是使元素从一种样式逐渐变化为另一种样式的效果您可以改变任意多的样式任意多的次数。
请用百分比来规定变化生的时间,或用关键词"from"和"to"
,等同于0%和100%
百分比就是总的时间(我们这个案例10s)的划分25%*10=2.5s
div {
width : 100px;
height : 100px;
background-color : pink;
animation-name : move;
animation-duration : 2s;
animation-timing-function : ease;
animation-delay : 1s;
animation-iteration-count : infinite;
animation-direction : alternate;
animation-fill-mode : forwards;
}
div:hover {
animation-play-state : paused;
}
属性
描述
@keyframes
规定动画
animation
所有动画属性的简写属性,除了animation-play-state属性
animation-name
规定@keyframes动画的名称(必须的)
animation-duration
规定动画完成一个周期所花费的秒或毫秒,默认是0.(必须的)
animation-timing-function
规定动画的速度曲线,默认是"ease",还有linear,是匀速的意思
animation-delay
规定动画何时开始,默认是0
animation-iteration-count
规定动画被播放的次数,默认是1,还有infinite:无限
animation-direction
规定动画是否在下一周期逆向播放,默认是"normal","alternate"逆播放
animation-play-state
规定动画是否正在运行或暂停,默认是"running",还有"paused"
animation-fill-mode
规定动画结束后状态,保持forwards,回到起始backwards
animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的转态;
div {
animation : move 2s linear 0s 1 alternate forwards
}
div {
animation : move 2s linear alternate forwards
}
tips:
以上简写,要用空格隔开,持续时间一定在何时开始之前。
前面2个属性一定要写,其他可以省略,顺序不定
map {
position : relative;
width : 747px;
height : 616px;
//中国地图
background : url(media/map.png) no-repeat
margin 0 auto;
}
.city {
position : absolute;
top : 100px;
right : 100px;
color : #fff;
}
.dotted {
width : 8px;
height : 8px;
background-color : #09f;
border-radius : 50%;
}
.city div[class^='pulse'] {
position : absolute;
top : 50%
left : 50%
transform : translate ( -50%,-50%) ;
width : 8px;
height : 8px;
//有阴影波纹会更好看
box-shadow : 0 0 12px #009dfd;
border-radius : 50%;
}
.city div.pulse2 {
animation-delay : 0.4s;
}
.city div.pulse3 {
animation-delay : 0.8s;
}
@keyframes pulse {
0% { }
70% {
width : 40px;
height : 40px;
opacity : 1;
}
100% {
width : 70px;
width : 70px;
opacity : 0;
}
}
< div class = ' map' >
< div class = ' city' >
< div class = ' dotted' > div>
< div class = ' pulse1' > div>
< div class = ' pulse2' > div>
< div class = ' pulse3' > div>
div>
div>
animation-timing-function:规定动画的速度曲线,默认是"ease"
值
描述
linear
动画从头到尾的速度是相同的。匀速
ease
默认。动画以低速开始,然后加快,在结束前变慢。
ease-in
动画以低速开始。
ease-out
动画以低速结束。
ease-in-out
动画以低速开始和结束
steps()
指定了时间函数中的间隔数量(步长)
div {
overflow : hidden;
width : 0;
height : 30px;
background-color : pink;
white-space : nowrap;
animation : w 4s steps ( 10) forwards;
}
@keyframes w {
0% {
width : 0;
}
100% {
width : 200px;
}
}
body {
background-color : #ccc;
}
div {
position : absolute;
width : 200px;
height : 100px;
background : url(media/bear.png) no-repeat;
animation : bear 1s steps ( 8) infinite, move 3s forwards;
}
@keyframes bear {
0% {
background-position : 0,0;
}
100% {
background-position : -1600px 0
}
}
@keyframes move {
0% {
left : 0;
}
100% {
left : 50%;
//margin-left : -100px;
transform : translateX ( -50%)
}
}
tips:我们元素可以添加多个动画,用逗号分隔
3D转换
三维坐标系其实就是指立体空间,立体空间是由3个轴共同组成的。
x轴:水平向右 注意:x右边是正值,左边是负值
y轴:垂直向下 注意 : y下面是正值,上面是负值
z轴:垂直屏幕 注意:往外面是正值,往里面是负值
3D移动在2D移动的基础上多加了一个可以移动的方向,就是z轴方向。
;
div {
width : 200px;
height : 200px;
background-color : pink;
transform : translate3d ( 100px,100px,100px)
}
tips:
transform:translateZ(100px)
:仅仅是在Z轴上移动,translateZ
一般用px
单位
xyz
是不能省略的,如果没有就写0;
透视写在被观察元素的父盒子上面的,是一种观察的距离,Z轴越大(正值) 我们看到的物体就越大,近大远小;
body {
//有了透视, transform : translateZ 才管用,透视越小,看到的物品越立体,盒子越大
perspective : 500px;
}
div {
width : 100px;
height : 200px;
background-color : pink;
margin : 100px auto;
transform : translateZ ( 0)
}
body {
perspective : 300px;
}
img {
display : block;
margin : 100px auto;
transition : all 1s;
}
img:hover {
//transform : rotateX ( 180deg) ;
//transform : rotateY ( 180deg) ;
//transform : rotateZ ( 180deg) ;
//参数 x,y,z 那个有值就是沿着该轴旋转,最后一个表示旋转的角度。
//transform : rotate3d ( 1,0,0,45deg) ;
//沿着x和y的矢量即沿着对角线旋转45deg
transform : rotate3d ( 1,1,0,45deg) ;
}
< img src = " media/pig.jpg" >
tips: 对于元素旋转的方向的判断 可根据左手准则
X轴旋转: 左手的手拇指,指向x轴的正方向(指向右手边的方向),其余手指的弯曲方向就是该元素沿着x轴旋转的方向。
Y轴旋转:左手的手拇指指向y轴的正方向(指向自己的方向), 其余手指的弯曲方向就是该元素沿着y轴旋转的方向(正值)。
3D呈现transfrom-style
控制子元素是否开启三维立体环境。
transform-style:flat
子元素不开启3d立体空间 默认的
transform-style:preserve-3d
;子元素开启立体空间
代码写给父级,但是影响的是子盒子
body {
//body是div的爷爷级,也算是父级。
perspective : 500px;
}
.box {
width : 200px;
height : 200px;
margin : 100px auto;
transition : all 2s;
transform-style : preserve-3d;
}
.box:hover {
transform : rotateY ( 60deg) ;
}
.box div {
position : absolute;
top : 0;
left : 0;
width : 100%;
height : 100%;
background-color : red;
}
.box div:last-child {
background-color : blue;
transform : rotateX ( 90deg) ;
}
< div class = " box" >
< div> div>
< div> div>
< div>
body {
//透视
perspective : 400px;
}
.box {
position : relative;
width : 300px;
height : 300px;
margin : 100px auto;
transition : all .6s;
transform-style : preserve-3d;
}
.box:hover {
transform : rotateY ( 180deg) ;
}
.front,
.back {
position : absolute;
top : 0;
left : 0;
width : 100%;
height : 100%;
border-radius : 50%;
font-size : 30px;
color : #fff;
text-align : center;
line-height : 300px;
}
.front {
background-color : red;
z-index : 1;
}
.back {
background-color : blue;
transform : rotateY ( 180deg) ;
}
< div class = " box" >
< div class = " front" > 我是正面 div>
< div class = " back" > 我是负面 div>
div>
//box父盒子里面包含前后两个子盒子,box是翻转的盒子 front是前面盒子,back是后面盒子。
杂项
css书写规范
1.布局定位属性 : display/position/float/clear/visibility/overflow ( 建议display第一个写,毕竟关系到模式)
2.自身属性 : width/height/margin/padding/border/background
3.文本属性 : color/font/text-decoration/text-align/vertical-align/white-space/break-word
4.其他属性( css3) : content/cursor/border-radius/box-shadow/text-shadow/background : linear-gradient
div {
//布局
display : block;
position : relative;
float : left;
//自身属性
width : 100px;
height : 100px;
margin : 0 10px;
padding : 20px 0;
//文本属性
font-family : Arial,'Helvetica Neue' , Helvetica,sans-sefif;
color : #333;
//css3新增的
background : rgba ( 0,0,0,.5) ;
border-radius : 10px;
}
页面布局整体思路
为了提高网页制作的效率,布局时通常有以下的整体思路
必须确定页面的版心(可视区/安全距离),我们测量可得知。
分析页面中的行模块,以及每个行模块中的列模块。其是页面布局第一准则。
一行中的列模块经常浮动布局,先确定每个列的大小,之后确定列的位置,页面布局第二准则。
制作HTML
结构,我们还是遵循,先有结构,后有样式的原则,结构永远最重要。
网页布局总结
通过盒子模型,清楚知道大部分html
标签是一个盒子。 通过css
浮动、定位可以让每个盒子排列成为网页。 一个完整的网页,是标准流、浮动、定位一起完成布局的,每个都有自己的专门用法。
标准流: 可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局。
浮动: 可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局。
定位: 定位最大的特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。如果元素自由在某个盒子内移动就用定位布局。
html5的新特性
< header> header>
< article> article>
< aside> aside>
< details> details>
< figcaption> figcaption>
< footer> footer>
< hgroup> hgroup>
< main> main>
< menu> menu>
< nav> nav>
< section> section>
< summary> summary>
< audio> audio>
< video> video>
属性值
说明
type=“email”
限制用户输入必须为Email类型
type=“url”
限制用户输入必须为URL类型
type=“date”
限制用户输入必须为日期类型
type=“time”
限制用户输入必须时间类型
type=“month”
限制用户输入必须月类型
type=“week”
限制用户输入必须周类型
type=“number”
限制用户输入必须数字类型
type=“tel”
手机号码
type=“search”
搜索框
type=“color”
生成一个颜色选择表单
属性
值
说明
required
required
表单拥有该属性表示其内容不能为空,必填
placeholder
提示文本
表单的提示信息,存在默认值将不显示
autofocus
autofocus
自动聚焦属性,页面加载完成后自动聚焦到指定表单
autocomplete
off/on
当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。默认已经打开,如autocomplete=“on”,关闭autocomplete="off"需要放在表单内,同时加上name属性,同时成功提交
multiple
multiple
可以多选文件提交
参考资料
https://www.bilibili.com/video/av80149248?from=search&seid=8416252108771814025
推荐
如果还想知道前端其他的方面的知识,可以看过来
vue知识点归纳与总结(笔记)
es5、es6、es7知识点的归纳与总结(笔记)
不一样的css,sass(scss)的基本使用
未完待续~~~
你可能感兴趣的:(前端,css)
Long类型前后端数据不一致
igotyback
前端
响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问
DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理
STU学生网页设计
网页设计 期末网页作业 html静态网页 html5期末大作业 网页设计 web大作业
️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程
【加密社】Solidity 中的事件机制及其应用
加密社
闲侃 区块链 智能合约 区块链
加密社引言在Solidity合约开发过程中,事件(Events)是一种非常重要的机制。它们不仅能够让开发者记录智能合约的重要状态变更,还能够让外部系统(如前端应用)监听这些状态的变化。本文将详细介绍Solidity中的事件机制以及如何利用不同的手段来触发、监听和获取这些事件。事件存储的地方当我们在Solidity合约中使用emit关键字触发事件时,该事件会被记录在区块链的交易收据中。具体而言,事件
关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript
二挡起步
web前端期末大作业 javascript html css 旅游 风景
⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip
HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动
二挡起步
web前端期末大作业 web设计网页规划与设计 html css javascript dreamweaver 前端
Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线
webpack图片等资源的处理
dmengmeng
需要的loaderfile-loader(让我们可以引入这些资源文件)url-loader(其实是file-loader的二次封装)img-loader(处理图片所需要的)在没有使用任何处理图片的loader之前,比如说css中用到了背景图片,那么最后打包会报错的,因为他没办法处理图片。其实你只想能够使用图片的话。只加一个file-loader就可以,打开网页能准确看到图片。{test:/\.(p
springboot+vue项目实战一-创建SpringBoot简单项目
苹果酱0567
面试题汇总与解析 spring boot 后端 java 中间件 开发语言
这段时间抽空给女朋友搭建一个个人博客,想着记录一下建站的过程,就当做笔记吧。虽然复制zjblog只要一个小时就可以搞定一个网站,或者用cms系统,三四个小时就可以做出一个前后台都有的网站,而且想做成啥样也都行。但是就是要从新做,自己做的意义不一样,更何况,俺就是专门干这个的,嘿嘿嘿要做一个网站,而且从零开始,首先呢就是技术选型了,经过一番思量决定选择-SpringBoot做后端,前端使用Vue做一
博客网站制作教程
2401_85194651
java maven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
最简单将静态网页挂载到服务器上(不用nginx)
全能全知者
服务器 nginx 运维 前端 html 笔记
最简单将静态网页挂载到服务器上(不用nginx)如果随便弄个静态网页挂在服务器都要用nignx就太麻烦了,所以直接使用Apache来搭建一些简单前端静态网页会相对方便很多检查Web服务器服务状态:sudosystemctlstatushttpd#ApacheWeb服务器如果发现没有安装web服务器:安装Apache:sudoyuminstallhttpd启动Apache:sudosystemctl
补充元象二面
Redstone Monstrosity
前端 面试
1.请尽可能详细地说明,防抖和节流的区别,应用场景?你的回答中不要写出示例代码。防抖(Debounce)和节流(Throttle)是两种常用的前端性能优化技术,它们的主要区别在于如何处理高频事件的触发。以下是防抖和节流的区别和应用场景的详细说明:防抖和节流的定义防抖:在一段时间内,多次执行变为只执行最后一次。防抖的原理是,当事件被触发后,设置一个延迟定时器。如果在这个延迟时间内事件再次被触发,则重
微信小程序开发注意事项
jun778895
微信小程序 小程序
微信小程序开发是一个融合了前端开发、用户体验设计、后端服务(可选)以及微信小程序平台特性的综合性项目。这里,我将详细介绍一个典型的小程序开发项目的全过程,包括项目规划、设计、开发、测试及部署上线等各个环节,并尽量使内容达到或超过2000字的要求。一、项目规划1.1项目背景与目标假设我们要开发一个名为“智慧校园助手”的微信小程序,旨在为学生提供一站式校园生活服务,包括课程表查询、图书馆座位预约、食堂
字节二面
Redstone Monstrosity
前端 面试
1.假设你是正在面试前端开发工程师的候选人,面试官让你详细说出你上一段实习过程的收获和感悟。在上一段实习过程中,我获得了宝贵的实践经验和深刻的行业洞察,以下是我的主要收获和感悟:一、专业技能提升框架应用熟练度:通过实际项目,我深入掌握了React、Vue等前端框架的使用,不仅提升了编码效率,还学会了如何根据项目需求选择合适的框架。问题解决能力:在实习期间,我遇到了许多预料之外的技术难题。通过查阅文
前端代码上传文件
余生逆风飞翔
前端 javascript 开发语言
点击上传文件import{ElNotification}from'element-plus'import{API_CONFIG}from'../config/index.js'import{UploadFilled}from'@element-plus/icons-vue'import{reactive}from'vue'import{BASE_URL}from'../config/index'i
《HTML 与 CSS—— 响应式设计》
陈在天box
html css 前端
一、引言在当今数字化时代,人们使用各种不同的设备访问互联网,包括智能手机、平板电脑、笔记本电脑和台式机等。为了确保网站在不同设备上都能提供良好的用户体验,响应式设计成为了网页开发的关键。HTML和CSS作为网页开发的基础技术,在实现响应式设计方面发挥着重要作用。本文将深入探讨HTML与CSS中的响应式设计原理、方法和最佳实践。二、响应式设计的概念与重要性(一)概念响应式设计是一种网页设计方法,旨在
uniapp实现动态标记效果详细步骤【前端开发】
2401_85123349
uni-app
第二个点在于实现将已经被用户标记的内容在下一次获取后刷新它的状态为已标记。这是什么意思呢?比如说上面gif图中的这些人物对象,有一些已被该用户添加为关心,那么当用户下一次进入该页面时,这些已经被添加关心的对象需要以“红心”状态显现出来。这个点的难度还不算大,只需要在每一次获取后端的内容后对标记对象进行状态更新即可。II.动态标记效果实现思路和步骤首先,整体的思路是利用动态类名对不同的元素进行选择。
html+css网页设计 旅游网站首页1个页面
html+css+js网页设计
html css 旅游
html+css网页设计旅游网站首页1个页面网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等任意html编辑软件进行运行及修改编辑等操作)。获取源码1,访问该网站https://download.csdn.net/download/qq_42431718/897527112,点击
css设置当字数超过限制后以省略号(...)显示
周bro
css 前端 vue css3 html 经验分享
1、文字超出一行,省略超出部分,显示’…’用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览。overflow:hidden;text-overflow:ellipsis;white-space:nowrap;2、多行文本溢出显示省略号display:-webkit-box;-webkit-box-orient:vertical;-webkit-lin
360前端星计划-动画可以这么玩
马小蜗
动画的基本原理定时器改变对象的属性根据新的属性重新渲染动画functionupdate(context){//更新属性}constticker=newTicker();ticker.tick(update,context);动画的种类1、JavaScript动画操作DOMCanvas2、CSS动画transitionanimation3、SVG动画SMILJS动画的优缺点优点:灵活度、可控性、性能
Vue + Express实现一个表单提交
九旬大爷的梦
最近在折腾一个cms系统,用的vue+express,但是就一个表单提交就弄了好久,记录一下。环境:Node10+前端:Vue服务端:Express依赖包:vueexpressaxiosexpress-formidableelement-ui(可选)前言:axiosget请求参数是:paramsaxiospost请求参数是:dataexpressget接受参数是req.queryexpresspo
css2中的透明
琪33
.out{width:400px;height:400px;background-color:blue;margin:100pxauto;border:1pxsolid#000;opacity:0.6;}.in{width:200px;height:200px;background-color:red;margin:100pxauto;}
Nginx从入门到实践(三)
听你讲故事啊
动静分离动静分离是将网站静态资源(JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。rewrite规则Rewrite规则常见正则表达式Rewrite主要的功能就是实现URL的重写,Ngin
Nginx的使用场景:构建高效、可扩展的Web架构
张某布响丸辣
nginx 前端 架构
Nginx,作为当今最流行的Web服务器和反向代理软件之一,凭借其高性能、稳定性和灵活性,在众多Web项目中扮演着核心角色。无论是个人博客、中小型网站,还是大型企业级应用,Nginx都能提供强大的支持。本文将探讨Nginx的几个主要使用场景,帮助读者理解如何在实际项目中充分利用Nginx的优势。1.静态文件服务对于包含大量静态文件(如HTML、CSS、JavaScript、图片等)的网站,Ngin
前端知识点
ZhangTao_zata
前端 javascript css
下面是一个最基本的html代码body{font-family:Arial,sans-serif;margin:20px;}//JavaScriptfunctionthatdisplaysanalertwhencalledfunctionshowMessage(){alert("Hello!Youclickedthebutton.");}MyFirstHTMLPageWelcometoMyPage
第三十一节:Vue路由:前端路由vs后端路由的了解
曹老师
1.认识前端路由和后端路由前端路由相对于后端路由而言的,在理解前端路由之前先对于路由有一个基本的了解路由:简而言之,就是把信息从原地址传输到目的地的活动对于我们来说路由就是:根据不同的url地址展示不同的页面内容1.1后端路由以前咱们接触比较多的后端路由,当改变url地址时,浏览器会向服务器发送请求,服务器根据这个url,返回不同的资源内容后端路由的特点就是前端每次跳转到不同url地址,都会重新访
华雁智科前端面试题
因为奋斗超太帅啦
前端笔试面试问题整理 javascript 开发语言 ecmascript
1.var变量的提升题目:vara=1functionfun(){console.log(b)varb=2}fun()console.log(a)正确输出结果:undefined、1答错了,给一个大嘴巴子,错误答案输出结果为:2,1此题主要考察var定义的变量,作用域提升的问题,相当于varaa=1functionfun(){varbconsole.log(b)b=2}fun()console.l
如何建设数据中台(五)——数据汇集—打破企业数据孤岛
weixin_47088026
学习记录和总结 中台 数据中台 程序人生 经验分享
数据汇集——打破企业数据孤岛要构建企业级数据中台,第一步就是将企业内部各个业务系统的数据实现互通互联,打破数据孤岛,主要通过数据汇聚和交换来实现。企业采集的数据可以是线上采集、线下数据采集、互联网数据采集、内部数据采集等。线上数据采集主要载体分为互联网和移动互联网两种,对应有系统平台、网页、H5、小程序、App等,可以采用前端或后端埋点方式采集数据。线下数据采集主要是通过硬件来采集,例如:WiFi
分布式锁和spring事务管理
暴躁的鱼
锁及事务 分布式 spring java
最近开发一个小程序遇到一个需求需要实现分布式事务管理业务需求用户在使用小程序的过程中可以查看景点,对景点地区或者城市标记是否想去,那么需要统计一个地点被标记的人数,以及记录某个用户对某个地点是否标记为想去,用两个表存储数据,一个地点表记录改地点被标记的次数,一个用户意向表记录某个用户对某个地点是否标记为想去。由于可能有多个用户同时标记一个地点,每个用户在前端点击想去按钮之后,后台接收到请求,从数据
Python精选200Tips:121-125
AnFany
Python200+Tips python 开发语言
Spendyourtimeonself-improvement121Requests-简化的HTTP请求处理发送GET请求发送POST请求发送PUT请求发送DELETE请求会话管理处理超时文件上传122BeautifulSoup-网页解析和抓取解析HTML和XML文档查找单个标签查找多个标签使用CSS选择器查找标签提取文本修改文档内容删除标签处理XML文档123Scrapy-强大的网络爬虫框架示例
前端CSS面试常见题
剑亦未配妥
前端面试 前端 css 面试
边界塌陷盒模型有两种:W3C盒模型和IE盒模型,区别在于宽度是否包含边框定义:同时给兄弟/父子盒模型设置上下边距,理论上边距值是两者之和,实际上不是注意:浮动和定位不会产生边界塌陷;只有块级元素垂直方向才会产生margin合并margin计算方案margin同为正负:取绝对值大的值一正一负:求和父子元素边界塌陷解决父元素可以通过调整padding处理;设置overflowhidden,触发BFC子
爬虫技术抓取网站数据
Bearjumpingcandy
爬虫
爬虫技术是一种自动化获取网站数据的技术,它可以模拟人类浏览器的行为,访问网页并提取所需的信息。以下是爬虫技术抓取网站数据的一般步骤:发起HTTP请求:爬虫首先会发送HTTP请求到目标网站,获取网页的内容。解析HTML:获取到网页内容后,爬虫会使用HTML解析器解析HTML代码,提取出需要的数据。数据提取:通过使用XPath、CSS选择器或正则表达式等工具,爬虫可以从HTML中提取出所需的数据,如文
java观察者模式
3213213333332132
java 设计模式 游戏 观察者模式
观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。
在日常中,我们配java环境变量时,设置一个JAVAHOME变量,这就是被观察者,使用了JAVAHOME变量的对象都是观察者,一旦JAVAHOME的路径改动,其他的也会跟着改动。
这样的例子很多,我想用小时候玩的老鹰捉小鸡游戏来简单的描绘观察者模式。
老鹰会变成观察者,母鸡和小鸡是
TFS RESTful API 模拟上传测试
ronin47
TFS RESTful API 模拟上传测试。
细节参看这里:https://github.com/alibaba/nginx-tfs/blob/master/TFS_RESTful_API.markdown
模拟POST上传一个图片:
curl --data-binary @/opt/tfs.png http
PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式
dcj3sjt126com
设计模式 PHP
// 多态, 在JAVA中是这样用的, 其实在PHP当中可以自然消除, 因为参数是动态的, 你传什么过来都可以, 不限制类型, 直接调用类的方法
abstract class Tiger {
public abstract function climb();
}
class XTiger extends Tiger {
public function climb()
hibernate
171815164
Hibernate
main,save
Configuration conf =new Configuration().configure();
SessionFactory sf=conf.buildSessionFactory();
Session sess=sf.openSession();
Transaction tx=sess.beginTransaction();
News a=new
Ant实例分析
g21121
ant
下面是一个Ant构建文件的实例,通过这个实例我们可以很清楚的理顺构建一个项目的顺序及依赖关系,从而编写出更加合理的构建文件。
下面是build.xml的代码:
<?xml version="1
[简单]工作记录_接口返回405原因
53873039oycg
工作
最近调接口时候一直报错,错误信息是:
responseCode:405
responseMsg:Method Not Allowed
接口请求方式Post.
关于java.lang.ClassNotFoundException 和 java.lang.NoClassDefFoundError 的区别
程序员是怎么炼成的
真正完成类的加载工作是通过调用 defineClass来实现的;
而启动类的加载过程是通过调用 loadClass来实现的;
就是类加载器分为加载和定义
protected Class<?> findClass(String name) throws ClassNotFoundExcept
JDBC学习笔记-JDBC详细的操作流程
aijuans
jdbc
所有的JDBC应用程序都具有下面的基本流程: 1、加载数据库驱动并建立到数据库的连接。 2、执行SQL语句。 3、处理结果。 4、从数据库断开连接释放资源。
下面我们就来仔细看一看每一个步骤:
其实按照上面所说每个阶段都可得单独拿出来写成一个独立的类方法文件。共别的应用来调用。
1、加载数据库驱动并建立到数据库的连接:
Html代码
St
rome创建rss
antonyup_2006
tomcat cms xml struts Opera
引用
1.RSS标准
RSS标准比较混乱,主要有以下3个系列
RSS 0.9x / 2.0 : RSS技术诞生于1999年的网景公司(Netscape),其发布了一个0.9版本的规范。2001年,RSS技术标准的发展工作被Userland Software公司的戴夫 温那(Dave Winer)所接手。陆续发布了0.9x的系列版本。当W3C小组发布RSS 1.0后,Dave W
html表格和表单基础
百合不是茶
html 表格 表单 meta 锚点
第一次用html来写东西,感觉压力山大,每次看见别人发的都是比较牛逼的 再看看自己什么都还不会,
html是一种标记语言,其实很简单都是固定的格式
_----------------------------------------表格和表单
表格是html的重要组成部分,表格用在body里面的
主要用法如下;
<table>
&
ibatis如何传入完整的sql语句
bijian1013
java sql ibatis
ibatis如何传入完整的sql语句?进一步说,String str ="select * from test_table",我想把str传入ibatis中执行,是传递整条sql语句。
解决办法:
<
精通Oracle10编程SQL(14)开发动态SQL
bijian1013
oracle 数据库 plsql
/*
*开发动态SQL
*/
--使用EXECUTE IMMEDIATE处理DDL操作
CREATE OR REPLACE PROCEDURE drop_table(table_name varchar2)
is
sql_statement varchar2(100);
begin
sql_statement:='DROP TABLE '||table_name;
【Linux命令】Linux工作中常用命令
bit1129
linux命令
不断的总结工作中常用的Linux命令
1.查看端口被哪个进程占用
通过这个命令可以得到占用8085端口的进程号,然后通过ps -ef|grep 进程号得到进程的详细信息
netstat -anp | grep 8085
察看进程ID对应的进程占用的端口号
netstat -anp | grep 进程ID
&
优秀网站和文档收集
白糖_
网站
集成 Flex, Spring, Hibernate 构建应用程序
性能测试工具-JMeter
Hmtl5-IOCN网站
Oracle精简版教程网站
鸟哥的linux私房菜
Jetty中文文档
50个jquery必备代码片段
swfobject.js检测flash版本号工具
angular.extend
boyitech
AngularJS angular.extend AngularJS API
angular.extend 复制src对象中的属性去dst对象中. 支持多个src对象. 如果你不想改变一个对象,你可以把dst设为空对象{}: var object = angular.extend({}, object1, object2). 注意: angular.extend不支持递归复制. 使用方法: angular.extend(dst, src); 参数:
java-谷歌面试题-设计方便提取中数的数据结构
bylijinnan
java
网上找了一下这道题的解答,但都是提供思路,没有提供具体实现。其中使用大小堆这个思路看似简单,但实现起来要考虑很多。
以下分别用排序数组和大小堆来实现。
使用大小堆:
import java.util.Arrays;
public class MedianInHeap {
/**
* 题目:设计方便提取中数的数据结构
* 设计一个数据结构,其中包含两个函数,1.插
ajaxFileUpload 针对 ie jquery 1.7+不能使用问题修复版本
Chen.H
ajaxFileUpload ie6 ie7 ie8 ie9
jQuery.extend({
handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
if ( s.error ) {
s.error.call( s.context || s, xhr, status, e );
}
[机器人制造原则]机器人的电池和存储器必须可以替换
comsci
制造
机器人的身体随时随地可能被外来力量所破坏,但是如果机器人的存储器和电池可以更换,那么这个机器人的思维和记忆力就可以保存下来,即使身体受到伤害,在把存储器取下来安装到一个新的身体上之后,原有的性格和能力都可以继续维持.....
另外,如果一
Oracle Multitable INSERT 的用法
daizj
oracle
转载Oracle笔记-Multitable INSERT 的用法
http://blog.chinaunix.net/uid-8504518-id-3310531.html
一、Insert基础用法
语法:
Insert Into 表名 (字段1,字段2,字段3...)
Values (值1,
专访黑客历史学家George Dyson
datamachine
on
20世纪最具威力的两项发明——核弹和计算机出自同一时代、同一群年青人。可是,与大名鼎鼎的曼哈顿计划(第二次世界大战中美国原子弹研究计划)相 比,计算机的起源显得默默无闻。出身计算机世家的历史学家George Dyson在其新书《图灵大教堂》(Turing’s Cathedral)中讲述了阿兰·图灵、约翰·冯·诺依曼等一帮子天才小子创造计算机及预见计算机未来
小学6年级英语单词背诵第一课
dcj3sjt126com
english word
always 总是
rice 水稻,米饭
before 在...之前
live 生活,居住
usual 通常的
early 早的
begin 开始
month 月份
year 年
last 最后的
east 东方的
high 高的
far 远的
window 窗户
world 世界
than 比...更
在线IT教育和在线IT高端教育
dcj3sjt126com
教育
codecademy
http://www.codecademy.com codeschool
https://www.codeschool.com teamtreehouse
http://teamtreehouse.com lynda
http://www.lynda.com/ Coursera
https://www.coursera.
Struts2 xml校验框架所定义的校验文件
蕃薯耀
Struts2 xml校验 Struts2 xml校验框架 Struts2校验
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年7月11日 15:54:59 星期六
http://fa
mac下安装rar和unrar命令
hanqunfeng
mac
1.下载:http://www.rarlab.com/download.htm 选择
RAR 5.21 for Mac OS X 2.解压下载后的文件 tar -zxvf rarosx-5.2.1.tar 3.cd rar sudo install -c -o $USER unrar /bin #输入当前用户登录密码 sudo install -c -o $USER rar
三种将list转换为map的方法
jackyrong
list
在本文中,介绍三种将list转换为map的方法:
1) 传统方法
假设有某个类如下
class Movie {
private Integer rank;
private String description;
public Movie(Integer rank, String des
年轻程序员需要学习的5大经验
lampcy
工作 PHP 程序员
在过去的7年半时间里,我带过的软件实习生超过一打,也看到过数以百计的学生和毕业生的档案。我发现很多事情他们都需要学习。或许你会说,我说的不就是某种特定的技术、算法、数学,或者其他特定形式的知识吗?没错,这的确是需要学习的,但却并不是最重要的事情。他们需要学习的最重要的东西是“自我规范”。这些规范就是:尽可能地写出最简洁的代码;如果代码后期会因为改动而变得凌乱不堪就得重构;尽量删除没用的代码,并添加
评“女孩遭野蛮引产致终身不育 60万赔偿款1分未得”医腐深入骨髓
nannan408
先来看南方网的一则报道:
再正常不过的结婚、生子,对于29岁的郑畅来说,却是一个永远也无法实现的梦想。从2010年到2015年,从24岁到29岁,一张张新旧不一的诊断书记录了她病情的同时,也清晰地记下了她人生的悲哀。
粗暴手术让人发寒
2010年7月,在酒店做服务员的郑畅发现自己怀孕了,可男朋友却联系不上。在没有和家人商量的情况下,她决定堕胎。
12月5日,
使用jQuery为input输入框绑定回车键事件 VS 为a标签绑定click事件
Everyday都不同
jsp input 回车键绑定 click enter
假设如题所示的事件为同一个,必须先把该js函数抽离出来,该函数定义了监听的处理:
function search() {
//监听函数略......
}
为input框绑定回车事件,当用户在文本框中输入搜索关键字时,按回车键,即可触发search():
//回车绑定
$(".search").keydown(fun
EXT学习记录
tntxia
ext
1. 准备
(1) 官网:http://www.sencha.com/
里面有源代码和API文档下载。
EXT的域名已经从www.extjs.com改成了www.sencha.com ,但extjs这个域名会自动转到sencha上。
(2)帮助文档:
想要查看EXT的官方文档的话,可以去这里h
mybatis3的mapper文件报Referenced file contains errors
xingguangsixian
mybatis
最近使用mybatis.3.1.0时无意中碰到一个问题:
The errors below were detected when validating the file "mybatis-3-mapper.dtd" via the file "account-mapper.xml". In most cases these errors can be d