Thrid Week -CSS3 Jquery

285 阅读2分钟

CSS3

CSS3选择器

1.元素选择器

*  E  E#id  E.class 

2.关系选择器

E F (后代选择器)
E > F (子代选择器)
E + F (相邻选择器)
E ~ F (兄弟选择器)

3.属性选择器

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元素)
E [att*="val"] (选择具有att属性且属性值为包含val的字符串的E元素)
E [att|="val"] (选择具有att属性,其值是以val开头并用连接符"-"分隔的字符串的E元素;
                如果值仅为val,也将被选择)

4.伪类选择器

E:link (设置超链接a在未被访问前的样式)
E:visited (设置超链接a在其链接地址已被访问过时的样式)
E:hover (设置元素在其鼠标悬停时的样式)
E:active (设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式)
'注意,a:hover 必须位于 a:link 和 a:visited 之后,a:active 必须位于 a:hover 之后'
E:focus (设置对象在成为输入焦点时的样式)
E:lang(fr) (匹配使用特殊语言的E元素)
E:not(s) (匹配不含有s选择符的元素E)
E:root (匹配E元素在文档的根元素)'在HTML中,根元素永远是HTML'
E:first-child (匹配父元素的第一个子元素E)
'注'
'<ul>
	<li>列表项一</li>
	<li>列表项二</li>
	<li>列表项三</li>
	<li>列表项四</li>
</ul>'
'在上述代码中,如果我们要设置第一个li的样式,那么代码应该写成li:first-child{sRules},
而不是ul:first-child{sRules}'
E:last-child (匹配父元素的最后一个子元素E)
E:only-child (匹配父元素仅有的一个子元素E)
E:nth-child(n) (匹配父元素的第n个子元素E,假设该子元素不是E,则选择符无效)
E:nth-last-child(n) (匹配父元素的倒数第n个子元素E,假设该子元素不是E,则选择符无效)
E:first-of-type (匹配父元素下第一个类型为E的子元素)
E:last-of-type (匹配父元素下的所有E子元素中的倒数第一个)
E:only-of-type (匹配父元素的所有子元素中唯一的那个子元素E)
E:nth-of-type(n) (匹配父元素的第n个子元素E)
E:nth-last-of-type(n) (匹配父元素的倒数第n个子元素E)
E:empty (匹配没有任何子元素(包括text节点)的元素E)
E:checked(匹配用户界面上处于选中状态的元素E)(用于input type为radio与checkbox时)
E:enabled (匹配用户界面上处于可用状态的元素E)
E:disabled (匹配用户界面上处于禁用状态的元素E)
E:target (匹配相关URL指向的E元素)

5.伪对象选择器

E:first-letter/E::first-letter (设置对象内的第一个字符的样式)
E:first-line/E::first-line (设置对象内的第一行的样式)
E:before/E::before (设置在对象前发生的内容。用来和content属性一起使用,'并且必须定义content属性')
E:after/E::after (设置在对象后发生的内容。用来和content属性一起使用,'并且必须定义content属性')
E::selection (设置对象被选择时的样式)

CSS3文本字体

 1.text-shadow:5px 6px 10px red; 文本阴影 阴影水平偏移量 阴影垂直偏移量 阴影模糊值 颜色
 2.单行文本溢出
 {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
 }
 3.@font-face 网络字体(例如iconfont)

背景

1.background-origin(指定的背景图像计算的原点)
'默认值:padding-box ,  
border-box:从border区域(含border)开始显示背景图像。
padding-box:从padding区域(含padding)开始显示背景图像。
content-box:从content区域开始显示背景图像。'
2.background-clip(指定对象的背景图像向外裁剪的区域)
'默认值:border-box ,
border-box:从border区域(含border)开始向外裁剪背景。
padding-box:从padding区域(含padding)开始向外裁剪背景。
content-box:从content区域开始向外裁剪背景。
text:从前景内容的形状(比如文字)作为裁剪区域向外裁剪,如此即可实现使用背景作为填充色之类的遮罩效果。'
3.background-size 
'background-size: cover;将背景图像等比缩放到完全覆盖容器,背景图像有可能超出容器。
 background-size: contain;将背景图像等比缩放到宽度或高度与容器的宽度或高度相等,
                          背景图像始终被包含在容器内。
 background-size:400px 200px;
 background-size:100%;按比例'
4.background:url(http://css.doyoe.com/properties/backgrounds/skin/p_103x196_1.jpg) 0 0 no-repeat;
'url图片引入 第二个第三个值为定位 第四个为是否重复'

弹性盒模型

display:flex; 弹性盒模型
flex:1;(占父元素剩余部分的份数)(父元素设置display:flex; 子元素设置flex)
flex-direction 设置或检索伸缩盒对象的子元素在父容器中的位置。
'默认值:row
row:横向从左到右排列(左对齐)
row-reverse:对齐方式与row相反。
column:纵向从上往下排列(顶对齐)
column-reverse:对齐方式与column相反'
flex-wrap 设置或检索伸缩盒对象的子元素超出父容器时是否换行。
align-items 设置或检索弹性盒子元素垂直对齐方式。
'默认值:stretch
flex-start:居上。
flex-end:居下。
center:居中。
baseline:基线对齐。
stretch:拉伸'
justify-content 设置或检索弹性盒子元素水平对齐方式。
'默认值:flex-start
flex-start:居左
flex-end:居右
center:居中
space-between:两边无空,中间平均分
space-around:两边有空,平均分'

动画

transition: width 2s linear 2s;
/* 过度  属性  执行时间  运动方式  延迟时间 */
animation: run 2s ease 2s infinite forwards;
/*动画名称 执行时间 运动方式 延迟时间 循环次数 动画结束后状态*/
@keyframes run {
    30%{
        width:800px;
    }
    50%{
        width:200px;
    }
    100%{
        width:1000px;
    }
}

响应式

<!--  页面宽度 = 设备款速  初始缩放比例1 允许用户缩放到的最大比例 允许用户缩放到的最小比例 用户是否可以手动缩放 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0 , maximum-scale=1, minimum-scale=1" user-scalable=no">


/* >=980 red */
@media (min-width: 980px) {
    #div1{
        background:red;
    }
}
/* <=768 yellow */
@media (max-width: 768px) {
    #div1{
        background:yellow;
    }
}
@media screen and (max-width:480px){  //screen屏幕
    #div1{
        background: #eee;
    }
}

补充

边框圆角与阴影

border-radius (边框圆角)(圆50%)
box-shadow:5px 6px 10px red; 阴影水平偏移量 阴影垂直偏移量 阴影模糊值 颜色

颜色设置 可用 rgba(255,255,255,0.7) (最后值为透明度,前三个值为0~255);

变形

transform:translate() ;位移
transform:translatex();x轴位移
transform:translatey();y轴位移
transform:translatez();z轴位移
transform:rotate(30deg);旋转(顺时针)
transform:rotatex();x轴旋转
transform:rotatey();y轴旋转
transform:rotatez();z轴旋转
transform:scale();缩放
transform:skew();扭曲
transform-origin:right bottom;旋转

一些例子

五环的一种实现方法

利用::after和border-radius制作五环

主要思路:先画出五个圆,通过定位调整好位置,然后给每一个圆添加一个::after,与每一个位置相同
    并用z-index调整显示层级,然后看谁压在谁上边,通过调整边框透明使之完成。

旋转立方体

 主要思路:首先构筑六个面,先是六个面写出同样的样式,定位到容器之中,然后通过旋转和
    位移调位置,给body设施perspective,提高视角,在通过keyframe 构筑一个动画,进行怎样的旋转。

左侧固定右侧自适应

1.弹性盒模型
左侧将宽写死 父元素display:flex; 子元素自适应元素flex:1;
2.浮动
利用浮动将子元素中左侧元素宽高写死 子元素右侧用margin-left将左侧子元素空出 右侧写出高即可
3.定位
利用定位将子元素中左侧元素宽高写死定位到左侧 子元素右侧用margin-left将左侧子元素空出 右侧写出高即可
4.利用margin-top
左侧元素正常将宽高写死 右侧元素利用margin-top上移,用margin-left将左侧子元素空出 右侧写出高即可

水平垂直居中

1.利用定位实现
利用定位position:absolute;left:50%;top:50%;这样不会是水平居中,只会使左上角的点水平居中
再用margin-left=-width/2   margin-top=-height/2  实现
2.利用弹性盒模型
在父元素身上设置display: flex;
            justify-content: center;/* 水平 */
            align-items: center;/* 垂直 */

移动端自适应

1.百分比
2.弹性盒模型
3.rem(rem 相对于html元素(根元素)的字体大小)
' //320/6.4     html的fontsize  = 50
  // 640/6.4    html的fontsize  =  100
  // 1份为1rem'

other

小海豹,美团,旋转合并照片墙

Jquery

Jquery

onload

// 所有html资源加载完  会覆盖
window.onload = function(){
    var oDiv = document.getElementById('div1');
    console.log(oDiv.innerHTML);
}
//文档就绪  页面结构加载完  不会等待所有的资源 不会覆盖
$(document).ready(function(){
    var oDiv = document.getElementById('div1');
    console.log(oDiv.innerHTML);
});

对象互转

// 原生对象转成jq对象  $(dom)
console.log($(oDiv))
// jq对象转成原生对象  jq.get(0) ||  jq[0]
console.log($('#div1').get(0));
console.log($('#div')[0]);

事件委托

// 支持事件委托 
$('ul').on('click','li',function(){
    // this指 li
    console.log($(this).html());
})
// 点击按钮随机生成li
$('button').on('click',function(){
    $('<li>'+Math.random()+'</li>').appendTo('ul');
})

//mouseenter不支持事件冒泡
// 事件源
console.log(e.target);
// 事件类型  "mouseenter"
console.log(e.type);
// 阻止默认行为
e.preventDefault();
// 阻止事件冒泡
e.stopPropagation();
//  鼠标相对于文档的左边缘的位置
console.log(e.pageX);
console.log(e.pageY);
// 获取键盘码
console.log(e.which);

动画

//.stop 一个布尔值,指示是否取消以列队动画。默认 false.
//.stop 一个布尔值指示是否当前动画立即完成 默认 false.
$('#stop').on('click',function(){
    $('#div1').stop(false,true);
})

一些例子

反选框-Jquery

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <br />
    <input type="checkbox" name="items" value="足球" />足球
    <input type="checkbox" name="items" value="篮球" />篮球
    <input type="checkbox" name="items" value="羽毛球" />羽毛球
    <input type="checkbox" name="items" value="乒乓球" />乒乓球
    <br />
    <button id="CheckedAll">全&emsp;选</button>
    <button id="CheckedNo">全不选</button>
    <button id="CheckedRev">反&emsp;选</button>
    <script src="jquery-1.12.4.js"></script>
    <script>
        $('#CheckedAll').on('click', function() {
            $(':checkbox').prop('checked', true);
        })
        $('#CheckedNo').on('click', function() {
            $(':checkbox').prop('checked', false);
        })
        $('#CheckedRev').on('click', function() {
            $(':checkbox').each(function(index, elem) {
                elem.checked = !elem.checked;
            })
        })
    </script>
</body>

</html>

选项卡-Jquery

思路相同,Jquery更简单
    <script>
        $('li').on('click', function() {
            $(this).addClass('active').siblings().removeClass('active');
            var i = $(this).index();
            $('.div1').eq(i).addClass('selected').siblings().removeClass('selected');
        })
    </script>

垂直导航菜单-Jquery

  <script>
        $('.span1').on('click', function() {
            $(this).next().toggleClass('show');
        })
    </script>

轮播图-Jquery

   <script>
        var iNow = 0;
        $('#btn-box li').on('click',function(){
            change($(this).index());
            iNow = $(this).index();
        })
        $('#next').on('click',function(){
            iNow++;
            if(iNow ==  $('#btn-box li').size() ){
                iNow = 0;
            }
            change(iNow);
        })
        // 接收index 按钮中索引是index的 active 其他灰色 
        function change(index){
            $('#btn-box li').eq(index).addClass('active').siblings().removeClass('active');
            $('#img-box a').eq(index).addClass('selected').siblings().removeClass('selected');
        }
        var timer = setInterval(function(){
            // 执行next按钮的点击事件
            $('#next').trigger('click');
        },1000);

        $('#container').hover(function(){//鼠标划入处理函数
            clearInterval(timer);
        },function(){ ////鼠标划出处理函数
            timer = setInterval(function(){
                $('#next').trigger('click');
            },1000);
        });
    </script>