Css3
1.CSS
CSS选择器
CSS选择器用于选择你想要的元素的样式的模式
选择器 示例 示例说明 CSS
.class .intro 选择所有class="intro"的元素 1
#id #firstname 选择所有id="firstname"的元素 1
* * 选择所有元素 2
element p 选择所有<p>元素 1
element,element div,p 选择所有<div>元素和<p>元素 1
element element div p 选择<div>元素内的所有<p>元素 1
element>element div>p 选择所有父级是 <div> 元素的 <p> 元素 2
element+element div+p 选择所有紧接着<div>元素之后的<p>元素 2
[attribute] [target] 选择所有带有target属性元素 2
[attribute=value] [target=-blank] 选择所有使用target="-blank"的元素 2
[attribute~=value] [title~=flower] 选择标题属性包含单词"flower"的所有元素 2
[attribute|=language] [lang|=en] 选择 lang 属性以 en 为开头的所有元素 2
:link a:link 选择所有未访问链接 1
:visited a:visited 选择所有访问过的链接 1
:active a:active 选择活动链接 1
:hover a:hover 选择鼠标在链接上面时 1
:focus input:focus 选择具有焦点的输入元素 2
:first-letter p:first-letter 选择每一个<P>元素的第一个字母 1
:first-line p:first-line 选择每一个<P>元素的第一行 1
:first-child p:first-child 指定只有当<p>元素是其父级的第一个子级的样式。 2
:before p:before 在每个<p>元素之前插入内容 2
:after p:after 在每个<p>元素之后插入内容 2
:lang(language) p:lang(it) 选择一个lang属性的起始值="it"的所有<p>元素 2
element1~element2 p~ul 选择p元素之后的每一个ul元素 3
[attribute^=value] a[src^="https"] 选择每一个src属性的值以"https"开头的元素 3
[attribute$=value] a[src$=".pdf"] 选择每一个src属性的值以".pdf"结尾的元素 3
[attribute*=value] a[src*="runoob"] 选择每一个src属性的值包含子字符串"runoob"的元素 3
:first-of-type p:first-of-type 选择每个p元素是其父级的第一个p元素 3
:last-of-type p:last-of-type 选择每个p元素是其父级的最后一个p元素 3
:only-of-type p:only-of-type 选择每个p元素是其父级的唯一p元素 3
:only-child p:only-child 选择每个p元素是其父级的唯一子元素 3
:nth-child(n) p:nth-child(2) 选择每个p元素是其父级的第二个子元素 3
:nth-last-child(n) p:nth-last-child(2) 选择每个p元素的是其父级的第二个子元素,从最后一个子项计数 3
:nth-of-type(n) p:nth-of-type(2) 选择每个p元素是其父级的第二个p元素 3
:nth-last-of-type(n) p:nth-last-of-type(2) 选择每个p元素的是其父级的第二个p元素,从最后一个子项计数 3
:last-child p:last-child 选择每个p元素是其父级的最后一个子级。 3
:root :root 选择文档的根元素 3
:empty p:empty 选择每个没有任何子级的p元素(包括文本节点) 3
:target #news:target 选择当前活动的#news元素(包含该锚名称的点击的URL) 3
:enabled input:enabled 选择每一个已启用的输入元素 3
:disabled input:disabled 选择每一个禁用的输入元素 3
:checked input:checked 选择每个选中的输入元素 3
:not(selector) :not(p) 选择每个并非p元素的元素 3
::selection ::selection 匹配元素中被用户选中或处于高亮状态的部分 3
:out-of-range :out-of-range 匹配值在指定区间之外的input元素 3
:in-range :in-range 匹配值在指定区间之内的input元素 3
:read-write :read-write 用于匹配可读及可写的元素 3
:read-only :read-only 用于匹配设置 "readonly"(只读) 属性的元素 3
:optional :optional 用于匹配可选的输入元素 3
:required :required 用于匹配设置了 "required" 属性的元素 3
:valid :valid 用于匹配输入值为合法的元素 3
:invalid :invalid 用于匹配输入值为非法的元素 3
2.css: display
display 属性:
值 描述
none 此元素不会被显示。
block 此元素将显示为块级元素,此元素前后会带有换行符。
inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
inline-block 行内块元素。(CSS2.1 新增的值)
list-item 此元素会作为列表显示。
run-in 此元素会根据上下文作为块级元素或内联元素显示。
compact CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
marker CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
table 此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
inline-table 此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
table-row-group 此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
table-header-group 此元素会作为一个或多个行的分组来显示(类似 <thead>)。
table-footer-group 此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
table-row 此元素会作为一个表格行显示(类似 <tr>)。
table-column-group 此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
table-column 此元素会作为一个单元格列显示(类似 <col>)
table-cell 此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
table-caption 此元素会作为一个表格标题显示(类似 <caption>)
inherit 规定应该从父元素继承 display 属性的值。
布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。
2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为Flex布局。注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
display:flex
Webkit内核的浏览器,必须加上-webkit前缀。
.box{
display: -webkit-flex; /* Safari */
display: flex;
}
Flex布局
采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。
6个属性设置:
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
-
flex-direction属性决定主轴的方向(即项目的排列方向)
row(默认值):主轴为水平方向,起点在左端。 row-reverse:主轴为水平方向,起点在右端。 column:主轴为垂直方向,起点在上沿。 column-reverse:主轴为垂直方向,起点在下沿
-
flex-wrap属性
默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
nowrap(默认):不换行。
wrap:换行,第一行在上方。
wrap-reverse:换行,第一行在下方。 ![](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071009.jpg)
- flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap
- justify-content属性定义了项目在主轴上的对齐方式
- align-items属性定义项目在交叉轴上如何对齐
- align-content属性定义了多根轴线的对齐方式
6个属性设置在子元素上。
order
flex-grow
flex-shrink
flex-basis
flex
align-self
- order属性,定义项目的排列顺序。数值越小,排列越靠前,默认为0
- flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大;如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
- flex-shrink属性,定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
- flex-basis属性,定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小
- flex属性,是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。
- lign-self属性,允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch
div重叠实现
要实现DIV重叠,并改变实现DIV盒子层叠重叠顺序,我们对父级使用position:relative,对子级使用position:absolute、z-index(重叠顺序)、left,right,top,bottom绝对定位相当于父级具体位置。
z-index的值为正整数值,数字越大对应对象层越浮上层(越靠前)。子DIV中width\height属性不设置,可能出现值为0的情况,造成DIV内容不显示。
class与CSS中类名加空格
在css中,类名+空格+类名,表示一种前后代关系。
在css中 ,类名+类名,表示一种多类选择器,匹配同时具有这两个类的元素。
在html中,class=”类名+空格+类名”,表示该元素同时拥有两个类。
### 动画与视角 perspective 属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。值越小,距离越近,变形越大.
当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。
.card{
width: 300px;
height: 400px;
perspective: 800px;
}
jquery 的 toggleClass()函数,可以实现类切换.可以增加多个需要切换的类,用空格隔开.
function init(){
$(".cards").children().each(function (index) {
$(this).click(function () {
$(this).toggleClass("card-flipped");
});
});
}
以上实例,在单击cards的子元素时,会切换为card-flipped类,再单击则切换为原来的类.下面是实现的CSS
.front{
background: #eaa;
transform: rotate3d(0,1,0,-180deg);
z-index: 8;
}
.back{
background: #966;
z-index: 10;
}
.card-flipped .back{
transform: rotate3d(0,1,0,180deg);
z-index: 8;
}
.card-flipped .front{
transform: rotate3d(0,1,0,0deg);
z-index: 10;
}
backface-visibility: hidden;这个属性,在翻转时会隐藏背面.
jquery选择元素
- jquery中使用eq()方法
jquery中使用eq()方法找到第几个元素或第N个元素,jquery中eq()的使用如下:
eq() 选择器选取带有指定 index 值的元素。
index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1)。
经常与其他元素/选择器一起使用,来选择指定的组中特定序号的元素。
例子:
$('#test').children().eq(1).css({'display':'inline-block'});
- CSS3 :nth-child() 选择器
:nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型。值从 1 开始.
$(".card:nth-child(2)").clone().appendTo(".cards");
CSS background-position 属性
一张图片上包含多个元素,可以通过移动背景图片的方式,取到每个元素.
background-position属性设置背景图像的起始位置。
值 描述
left top
left center
left bottom
right top
right center
right bottom
center top
center center
center bottom 如果仅指定一个关键字,其他值将会是"center"
x% y% 第一个值是水平位置,第二个值是垂直。左上角是0%0%。右下角是
100%100%。如果仅指定了一个值,其他值将是50%。 。默认值为:0%0%
xpos ypos 第一个值是水平位置,第二个值是垂直。左上角是0。单位可以
是像素(0px0px)或任何其他 CSS单位。如果仅指定了一个值,其他值将是
50%。你可以混合使用%和positions
JS事件
事件流主要分为冒泡型事件(从内到外)和捕获型事件(从外到内)。IE浏览器目前只支持冒泡型事件,而支持标准DOM的浏览器比如火狐、Chrome等两者都支持。
- 通用性的事件监听方法”on+事件”:
(1)绑定HTML元素属性:
<input type=”button” value=”clickMe” onclick=”check(this)”>
(2)绑定DOM对象属性:
document.getElementById(“xxx”).onclick=test;
特点:绑定多个函数对象,只有最后一个起作用.
- 标准DOM中的事件监听方法:
[object].addEvent(“事件类型”,”处理函数”,”冒泡事件或捕获事件”);
[object].removeEvent(“事件类型”,”处理函数”,”冒泡事件或捕获事件”);
提示:IE监听方法中事件类型和标准DOM监听方法中的事件类型写法有点不同,前者事件类型用“on”开头,如:“onclick”、“onmousemove”等,而后者不需要“on”,就是“click”、“mousemove”等。
window.onload=function(){ var test1=document.getElementById("test1");
var test2=document.getElementById("test2");
test1.addEventListener("click", show, false);//给第一个按钮注册了onclick事件
/*test2.onclick=function(){//解除第一个按钮的onclick事件(方法一)
test1.removeEventListener("click", show, false);
}*/
test2.addEventListener("click", function(){//解除第一个按钮的onclick事件(方法二)
test1.removeEventListener("click", show, false);
}, false);
}
jquery中监听事件:
jquery提供了四种事件监听方式,分别是bind、live、delegate、on.
https://blog.csdn.net/zhang070514/article/details/76778920/
html鼠标滚动事件
html鼠标滚动事件有两个: onmousewheel事件在没有滚动条的时候也能触发,而onscroll需要有滚动条才能触发,且onscroll多与scrollTop一起使用.
Firefox使用DOMMouseScroll,其他的浏览器使用mousewheel,滚动事件触发时Firefox使用detail属性捕捉滚轮信息,其他的浏览器使用wheelDelta.
html中可以通过addEventListener,监听事件.
♥IE 鼠标滚轮向上滚动是120,向下滚动是-120
♥Opera 鼠标滚轮向上滚动是120,向下滚动是-120
♥Chrome 鼠标滚轮向上滚动是120,向下滚动是-120
♥Safari 鼠标滚轮向上滚动是360,向下滚动是-360
♥Firefox 鼠标滚轮向上滚动是-3,向下滚动是3
const BOX_CHANGE_TIME = 1000; //页面动画的过渡时间
if (window.addEventListener) //FF,火狐浏览器会识别该方法
window.addEventListener('DOMMouseScroll', slideEvent, false);
window.onmousewheel = function (event) {
if (flag) { // 防止多次滚轮滚动多个页面,保证在上个页面动画结束后,发生下一个页面
flag = false;
slideEvent(event);
setTimeout(function () {
flag = true;
}, BOX_CHANGE_TIME)
}
}
for (let i = 0; i < list.length; i++) {
list[i].addEventListener('click', function () {
index = i - 1
slideEvent(event)
})
}
function slideEvent(event) {
clearTimeout(timer); //不会一次滚动触发多次事件
timer = setTimeout(function () {
e = event || window.event;
// IE、chrome监听的是wheelDelta,向下滚动其值为-120;向上滚动其值为120
if (e.wheelDelta) {
Delta = e.wheelDelta / 120;
//火狐浏览器监听的是detail,向下滚动其值为3;向上滚动其值为-3
} else if (e.detail) {
Delta = -e.detail / 3; //取负数,以保证符号相同
}
if (Delta > 0) { //向上
index = (index === 0 ? 0 : --index);
} else { //向下
index = (index === childLength - 1 ? childLength - 1 : ++index);
if (index > 3) {
index = 3;
}
}
for (let i = 0; i < childLength; i++) {
boxChild[i].style.top = (i - index) * 100 + "%";
}
for (let i = 0; i < libg.length; i++) {
libg[i].style.display = 'none';
}
libg[index].style.display = 'block'
}, 100);
}
html全局属性
HTML 全局属性
属性 描述
accesskey 规定激活元素的快捷键。
class 规定元素的一个或多个类名(引用样式表中的类)。
contenteditable 规定元素内容是否可编辑。
contextmenu 规定元素的上下文菜单。上下文菜单在用户点击元素时显示。
data-* 用于存储页面或应用程序的私有定制数据。
dir 规定元素中内容的文本方向。
draggable 规定元素是否可拖动。
dropzone 规定在拖动被拖动数据时是否进行复制、移动或链接。
hidden 规定元素仍未或不再相关。
id 规定元素的唯一 id。
lang 规定元素内容的语言。
spellcheck 规定是否对元素进行拼写和语法检查。
style 规定元素的行内 CSS 样式。
tabindex 规定元素的 tab 键次序。
title 规定有关元素的额外信息。
translate 规定是否应该翻译元素内容。
其中可以通过data-*定义自定义属性.
CSS 选择器参考手册
选择器 描述
[attribute] 用于选取带有指定属性的元素。
[attribute=value] 用于选取带有指定属性和值的元素。
[attribute~=value] 用于选取属性值中包含指定词汇的元素。
[attribute|=value] 用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。
[attribute^=value] 匹配属性值以指定值开头的每个元素。
[attribute$=value] 匹配属性值以指定值结尾的每个元素。
[attribute*=value] 匹配属性值中包含指定值的每个元素。
Window setTimeout() 方法
setTimeOut()用于在指定的毫秒数后调用函数或计算表达式。
提示: 1000 毫秒= 1 秒。
提示: 如果你只想重复执行可以使用 setInterval() 方法。
提示: 使用 clearTimeout() 方法来阻止函数的执行。
实例
3 秒(3000 毫秒)后弹出 "Hello" :
setTimeout(function(){ alert("Hello"); }, 3000);
本地存储
使用localStorage对象,可以将数据以”键-值”对的形式保存在本地.
localStorage.setItem("lastScore", cardgame.elapsTime);
var lastScore = parseInt(localStorage.getItem("lastScore"));
还可以将localStorage看做关联数组(类似MAP类)
localStorage["lastScore"]=cardgame.elapsTime;
var lastScore = parseInt(localStorage["lastScore"]);
使用JSON格式:
JSON.stringify(obj);//对象序列化为字条串
var lastScoreObj = JSON.parse(lastScore);//解析对象
按钮点击后出现边框,如何去掉
方法CSS3: outline:none;
适用于有背景图片,但是不要背景边框时的处理.
参考: