,可以对他们设置宽高和对齐属性,有些资料可能会称它们为行内块
元素
行内块元素的特点:
和相邻行内元素(行内块)在一行上,但是之间会有空白缝。
默认宽度就是它本身内部的宽度。
高度、行高、外边距以及内边距都可以控制。
显示模式转换
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)
移动端城市区县二级联动选择功能实现包
good2know
本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery
day15|前端框架学习和算法
universe_01
前端 算法 笔记
T22括号生成先把所有情况都画出来,然后(在满足什么情况下)把不符合条件的删除。T78子集要画树状图,把思路清晰。可以用暴力法、回溯法和DFS做这个题DFS深度搜索:每个边都走完,再回溯应用:二叉树搜索,图搜索回溯算法=DFS+剪枝T200岛屿数量(非常经典BFS宽度把树状转化成队列形式,lambda匿名函数“一次性的小函数,没有名字”setup语法糖:让代码更简洁好写的语法ref创建:基本类型的
js操作样式
郝加升
DOM样式属性和方法:指定的元素,它的style有这么几个属性和方法:cssText:通过这个属性可以访问到元素的特性style设置的属性,并且可以直接赋值设置。removeProperty(属性名称):从样式中删除给定属性。setProperty(属性名称,值,权重):可以通过这个方法设置给定样式的同时设置其权重,可以传入”important”或者一个空字符串。获取计算后样式:window.ge
用代码生成艺术字:设计个性化海报的秘密
本文围绕“用代码生成艺术字:设计个性化海报的秘密”展开,先概述代码生成艺术字在海报设计中的独特价值,接着介绍常用的代码工具(如HTML、CSS、JavaScript等),详细阐述从构思到实现的完整流程,包括字体样式设计、动态效果添加等,还分享了提升艺术字质感的技巧及实际案例。最后总结代码生成艺术字的优势,为设计师提供打造个性化海报的实用指南,助力提升海报设计的独特性与吸引力,符合搜索引擎SEO标准
vue element 封装表单
影子信息
vue vue.js javascript 前端
背景:在前端系统开发中,系统页面涉及到的表单组件比较多,所以进行了简单的封装。封装的包括一些Form表单组件,如下:input输入框、select下拉框、等实现效果:理论知识:表单组件官方链接:点击跳转封装组件:封装组件的思路:不封装element组件,每一个input组件绑定一个form对象,例如官网。简单封装element组件,利用for循环生成form表单的每一项el-form-item。进
前端面试每日 3+1 —— 第39天
浪子神剑
今天的面试题(2019.05.25)——第39天[html]title与h1、b与strong、i与em的区别分别是什么?[css]写出你知道的CSS水平和垂直居中的方法[js]说说你对模块化的理解[软技能]公钥加密和私钥加密是什么?《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。前端面试每日3+1题,以面试题来驱动学习,每天进步一点!让努力成为一种习惯,让奋斗成为一种享受!欢迎在Iss
前端数据库:IndexedDB从基础到高级使用指南
文章目录前端数据库:IndexedDB从基础到高级使用指南引言一、IndexedDB概述1.1什么是IndexedDB1.2与其他存储方案的比较二、基础使用2.1打开/创建数据库2.2基本CRUD操作添加数据读取数据更新数据删除数据三、高级特性3.1复杂查询与游标3.2事务高级用法3.3性能优化技巧四、实战案例:构建离线优先的待办事项应用4.1数据库设计4.2同步策略实现五、常见问题与解决方案5.
【Java Web实战】从零到一打造企业级网上购书网站系统 | 完整开发实录(三)
笙囧同学
java 前端 状态模式
核心功能设计用户管理系统用户管理是整个系统的基础,我设计了完整的用户生命周期管理:用户注册流程验证失败验证通过验证失败验证通过用户名已存在用户名可用失败成功用户访问注册页面填写注册信息前端表单验证显示错误提示提交到后端后端数据验证返回错误信息用户名唯一性检查提示用户名重复密码加密处理保存用户信息保存成功?显示系统错误注册成功跳转登录页面登录认证机制深度解析我实现了一套企业级的多层次安全认证机制:认
从零到一:打造基于GigaChat AI的艺术创作平台 | 笙囧同学的全栈开发实战
作者简介:笙囧同学,中科院计算机大模型方向硕士,全栈开发爱好者联系方式:
[email protected] 各大平台账号:笙囧同学座右铭:偷懒是人生进步的阶梯前言在AI技术飞速发展的今天,如何将前沿的大模型技术与实际应用相结合,一直是我们开发者关注的焦点。今天,笙囧同学将带大家从零开始,构建一个基于GigaChatAI的艺术创作平台,实现React前端+Django后端的完整全栈解决方案。这不仅仅是
14.tornado操作之应用Websocket协议实现聊天室功能
孤寒者
Tornado框架从入门到实战 websocket tornado 聊天室功能实现 python
目录:每篇前言:1.什么是WebSocket(1)定义(2)优点(3)和HTTP对比(4)适用场景2.WebSocket关键方法3.本tornado项目中使用WebSocket(1)准备一个聊天室的页面:第一步:编写视图:第二步:编写接口:(app.py中加入以下接口!)第三步:编写前端页面:测试接口——响应OK!(2)使用WebSocket:(3)聊天室的聊天功能的最终实现:第一步:战前准备第二
为什么学习Web前端一定要掌握JavaScript?
web前端学习指南
为什么学习Web前端一定要掌握JavaScript?在前端的世界里,没有什么是JavaScript实现不了的,关于JS有一句话:凡是可以用JavaScript来写的应用,最终都会用JavaScript,JavaScript可运行在所有主要平台的所有主流浏览器上,也可运行在每一个主流操作系统的服务器端上。现如今我们在为网站写任何一个主要功能的时候都需要有懂能够用JavaScript写前端的开发人员。
小架构step系列25:错误码
秋千码途
架构 java
1概述一个系统中,可能产生各种各样的错误,对这些错误进行编码。当错误发生时,通过这个错误码就有可能快速判断是什么错误,不一定需要查看代码就可以进行处理,提高问题处理效率。有了统一的错误码,还可以标准化错误信息,方便把错误信息纳入文档管理和对错误信息进行国际化等。没有错误码的管理,开发人员就会按自己的理解处理这些错误。有些直接把堆栈直接反馈到前端页面上,使用看不懂这些信息体验很差,也暴露了堆栈信息有
Java朴实无华按天计划从入门到实战(强化速战版-66天)
岫珩
Java 后端 java 开发语言 学习 Java 时间安排 学习计划
致敬读者感谢阅读笑口常开生日快乐⬛早点睡觉博主相关博主信息博客首页专栏推荐活动信息文章目录Java朴实无华按天计划从入门到实战(强化速战版-66天)1.基础(18)1.1JavaSE核心(5天)1.2数据库与SQL(5天)1.3前端基础(8天)2.进阶(17天)2.1JavaWeb核心(5天)2.2Mybatis与Spring全家桶(6天)2.3中间件入门(4天)2.4实践项目(2天)3.高阶(1
《跨域资源共享CORS的深层逻辑与前端实践精要》
不同源头的资源交互已成为常态,而跨域资源共享(CORS)正是支撑这种交互的隐形架构。现代Web安全体系中平衡开放与防护的精妙设计。理解CORS的深层逻辑,不仅能解决实际开发中的跨域难题,更能触及网络安全与资源流通的核心矛盾,为前端工程师构建稳健的应用提供底层认知支撑。跨域资源共享的诞生,源于网络安全与应用发展的必然冲突。浏览器的同源策略,作为早期网络安全的基石,通过限制不同源文档的交互,有效阻挡了
深入了解 Kubernetes(k8s):从概念到实践
目录一、k8s核心概念二、k8s的优势三、k8s架构组件控制平面组件节点组件四、k8s+docker运行前后端分离项目的例子1.准备前端项目2.准备后端项目3.创建k8s部署配置文件4.部署应用到k8s集群在当今云计算和容器化技术飞速发展的时代,Kubernetes(简称k8s)已成为容器编排领域的事实标准。无论是互联网巨头、传统企业还是初创公司,都在广泛采用k8s来管理和部署容器化应用。本文将带
大厂都在用的前端缓存策略,你掌握了吗?
AI架构全栈开发实战笔记
前端 缓存 ai
大厂都在用的前端缓存策略,你掌握了吗?关键词:前端缓存、HTTP缓存、ServiceWorker、CDN缓存、缓存策略、性能优化、浏览器缓存摘要:本文将深入探讨前端开发中常用的缓存策略,从浏览器缓存到ServiceWorker,从HTTP缓存头到CDN缓存,全面解析大厂都在使用的高效缓存技术。通过生动的比喻和实际代码示例,帮助开发者理解并掌握这些提升Web应用性能的关键技术。背景介绍目的和范围本文
26. 什么是雪碧图,作用和原理了解吗
yqcoder
前端面试-CSS css 前端 html
总结小图合成一张,使用background来使用,减少资源请求一、什么是雪碧图?雪碧图(CSSSprite)是一种前端优化技术,指的是将多个小图标合并成一张大图,通过CSS控制显示其中的某一部分。它常用于网站中图标、按钮等小图较多的场景。二、雪碧图的作用作用说明✅减少HTTP请求次数合并多个图片为一张图,减少请求资源数✅提升页面加载速度尤其在图片较多时效果明显✅避免图片加载闪烁鼠标悬停切换图片时不
H5UI微信小程序前端框架实战指南
ai
本文还有配套的精品资源,点击获取简介:H5UI是一个为微信小程序开发设计的前端框架,基于H5技术,提供简洁高效的组件库。框架集成了丰富的UI元素,如按钮、表格、导航栏等,简化了界面布局和交互的实现。通过安装、引入、使用组件和事件绑定四个步骤,开发者可以轻松构建功能齐全的应用。了解性能优化等注意事项对于高效开发同样重要。1.微信小程序前端开发框架介绍微信小程序概述微信小程序是微信官方推出的一种无需下
Ubuntu安装LAMP
L_h1
测试 ubuntu linux
在安装vim时遇到了一个问题:E:无法获得锁/var/lib/dpkg/lock-frontend-open(11:资源暂时不可用)E:无法获取dpkg前端锁(/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?解决办法:强制解锁sudorm/var/lib/dpkg/lock-frontendsudorm/var/cache/apt/archives/locksud
震惊!DOM变化监控神器MutationObserver,前端开发必知的隐藏武器!
coding随想
JavaScript 前端 javascript html5
一、什么是MutationObserver?如果你是一个前端开发者,一定会遇到这样的场景:页面动态加载内容后,某些操作失效了。比如,你写了一个监听按钮点击的代码,但按钮是通过AJAX动态加载的,你的代码根本无法触发。这个时候,你就需要一个“监控哨兵”——MutationObserver,它能实时监听DOM树的变化,帮你捕获那些“暗中作祟”的节点变动。MutationObserver是HTML5引入
Coze Studio 架构拆解:AI Agent 开发平台项目结构全分析
代码简单说
2025开发必备(限时特惠) 架构 人工智能 Coze Studio 架构 AI Agent 开发平台 全栈 AI 工程化 图解架构
CozeStudio架构拆解:AIAgent开发平台项目结构全分析标签:CozeStudio项目架构、领域驱动设计DDD、全栈开发规范、Hertz框架、前后端协作、云原生容器、前端测试、IDL接口设计、微服务解耦、AI开发平台源码分析在最近研究AIAgent开发平台的过程中,我深入分析了刚刚开源的CozeStudio项目。这套系统是国内少有的开源全栈AI工程化项目,代码整洁、架构先进,特别是它基于
关于前端的性能优化
性能优化主要涵盖了以下四个方面:(tip:仅代表个人总结,如有不当,还希望看到的大佬多多指示)减少网络请求:合并文件、使用CDN、启用缓存。优化资源加载:代码分割、懒加载、图片压缩。提升渲染性能:减少重绘回流、防抖节流、使用WebWorker。监控和迭代:定期使用工具检测性能,持续优化。一、网络层面优化减少HTTP请求合并文件:将多个CSS或JavaScript文件合并成一个,减少请求次数。使用C
Grid布局参考资料
kiterumer
Grid布局张鑫旭-写给自己看的display:grid布局教程阮一峰-CSSGrid网格布局教程在Grid布局中,float,display:inline-block,display:table-cell,vertical-align以及column-*这些属性和声明对grid子项是没有任何作用的。这个可以说是Grid布局中的常识,面试经常会问的,一定要记得。Grid布局则适用于更大规模的布局(
linux网卡显示未知未托管,linux有线网络显示设备未托管
NetworkManagerNetworkManager是为了使网络配置尽可能简单而开发的网络管理软件包,如果使用DHCP,NetworkManager会替换默认的路由表、从DHCP服务器获取IP地址并根据情况设置域名服务器,NetworkManager的目标是使网络能够开箱即用。NetworkManager由两部分组成:一个以超级用户运行的守护进程(network-manager);一个前端管理
页面开发样式和布局入门:Vite + Vue 3 + Less
页面开发样式和布局入门:Vite+Vue3+Less引言在现代前端开发中,样式和布局是页面开发的核心部分。随着技术的不断发展,Vite、Vue3和Less等工具和框架的出现,使得前端开发变得更加高效和灵活。然而,尽管这些工具和框架提供了强大的功能,但在实际开发中仍然会遇到各种样式和布局的问题。本文将结合Vite、Vue3和Less,详细介绍在页面开发中常见的样式和布局问题,并提供解决方案和最佳实践
推客系统小程序机构版开发上线全攻略(2025年最新版)
vx_qutudy
推客小程序 推客系统开发 推客系统源码
一、开发前准备:筑牢基础,合规先行1.1注册与认证账号注册:登录微信公众平台注册小程序账号,选择“机构版”类型,获取唯一AppID。资质认证:基础资质:企业营业执照、法人身份证、对公账户信息。特殊资质:涉及支付功能:需办理《增值电信业务经营许可证》(ICP证)。涉及教育/医疗内容:需《互联网信息服务许可证》或相关行业资质。1.2技术选型:高效与扩展并重模块推荐方案前端框架微信原生框架(WXML+W
网络安全第14集
不灭锦鲤
web安全 安全
前言:小迪安全14集,这集重点内容:0、什么是js渗透测试?在javascript中也存在变量和函数,存在可控变量和函数就有可能存在在漏洞,js开发的web应用和php、java开发的区别是,js能看得到的源代码,php看不到,但是风险就是未授权访问、配置信息泄露(加密算法、key秘钥等),源代码看得到,存在更多的url泄露,从而可能会出现未授权访问,从url,前提:web应用可以采用前端语言或后
解决 Webpack 报错 “No module factory available for dependency type: CssDependency“ 的方法
cmmav33990
webpack rust 前端
这个错误表明Webpack在处理CSS依赖时找不到合适的模块工厂,通常发生在配置不完整或依赖冲突的情况下。以下是详细的解决方案:核心解决方案方案1:安装并配置正确的CSS处理器(最推荐)bashnpminstall--save-devcss-loaderstyle-loader#或使用mini-css-extract-plugin替代style-loadernpminstall--save-dev
怎么判断一个DAPP是否真正去中心化
判断一个DAPP(去中心化应用)是否真正去中心化,需要从多个维度进行考察。以下是关键评估标准:1.区块链依赖程度✅真正去中心化:核心逻辑和数据处理完全依赖智能合约,运行在区块链上(如以太坊、Solana等)。❌伪去中心化:依赖中心化服务器处理关键数据或业务逻辑,仅前端去中心化。2.智能合约控制权✅去中心化:合约代码开源,无管理员密钥(adminkey)或可升级后门,治理由DAO(去中心化自治组织)
Web前端交互利用Python跟大模型操作
哥本哈士奇
前端 交互 python
Web前端交互利用Python跟大模型操作一个简单的演示,如何把大模型应用集成到自己的应用场景当中。这里的场景我们模拟的是在吃鸡游戏中,一个作战计划,是否符合老六的行为规范。吃鸡游戏已经风靡很多年,游戏里每个人的游戏风格都不一样,有喜欢钢枪的,有喜欢随机应变的,也有喜欢当老六苟分的。每种风格的游戏方式以及游戏里的行为都不同,所以这里将演示如何应用大模型,去判断一个人的游戏方式,是否符合一个老六的行
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