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;

适用于有背景图片,但是不要背景边框时的处理.

参考:

  1. my coding.net
  2. https://blog.csdn.net/u011300580/article/details/56011564
  3. http://www.divcss5.com/shili/s587.shtml
  4. css中类名+空格+类名、类名+类名与html中class=”类名+空格+类名”的区别
  5. javascript中的onmousewheel事件处理
  6. https://blog.csdn.net/dilomen/article/details/83692207
  7. JavaScript之事件概念和监听事件
  8. jquery中四种事件监听的区别