关于css和html(二)
背景图
在浏览器窗口缩小时,可以设置body,html的最小宽度
动画
div
{
animation:mymove 5s infinite;
-webkit-animation:mymove 5s infinite; /* Safari 和 Chrome */
}
animation-name 规定需要绑定到选择器的 keyframe 名称。。
animation-duration 规定完成动画所花费的时间,以秒或毫秒计。
animation-timing-function 规定动画的速度曲线。
animation-delay 规定在动画开始之前的延迟。
animation-iteration-count 规定动画应该播放的次数。
animation-direction 规定是否应该轮流反向播放动画。
使用简写属性,将动画与 div 元素绑定:
使用@keyframs和animation,绑定元素动画
@keyframs
.btn_wish{
cursor: pointer;
animation: stat .5s infinite alternate;
-webkit-animation: stat .5s infinite alternate;
-moz-animation: stat .5s infinite alternate;
-ms-animation: stat .5s infinite alternate;
}
@-moz-keyframes stat{
from{transform: scale(0.95);}
to{transform: scale(1.0);}
}
@-webkit-keyframes stat{
from{transform: scale(0.95);}
to{transform: scale(1.0);}
}
设置动画播放次数,可以设置成无限次,让元素一直运动。
css画六边形
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.wrapper{
width: 100px;
margin:20px auto;
}
.wrapper div{
width: 100px;
height: 200px;
overflow: hidden;
}
.box{
transform:rotateZ(60deg);
}
.inner{
transform: rotateZ(60deg);
background: red;
cursor: pointer;
}
.inner:hover{
background: blue;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="wrapper-box">
<div class="box">
<div class="inner">
</div>
</div>
</div>
</div>
</body>
</html>
offset
$(".btn1").click(function(){
x=$("p").offset();
$("#span1").text(x.left);
$("#span2").text(x.top);
});
$(selector).offset()
返回第一个匹配元素的偏移坐标。
该方法返回的对象包含两个整型属性:top 和 left,以像素计。此方法只对可见元素有效。
语法
复制内容到剪贴板
引入<script src="js/clipboard.js"></script>
然后在js中写出兼容代码
复制兼容
var ClipBoard = function(obj){
this.handlerID = obj.handlerID || null;
this.textID = obj.textID || null;
this.type = obj.type || 'copy';
this.isAttr = obj.isAttr || false;
this.isPlugin = true;
this.isActive = false;
var ua = window.navigator.userAgent;
var is_IE = ua.match(/(rv:|msie )\d+/i);
var IE_Version = is_IE ? parseInt(is_IE[0].split(/:| /g)[1]) : 9;
if(IE_Version <= 8){
this.isPlugin = false;
}
var handlerObj = document.getElementById(obj.handlerID);
if(typeof this.type === 'string'){
handlerObj.setAttribute('data-clipboard-action',this.type)
}else{
throw error('type类型错误!');
}
if(!obj.isAttr && obj.textID){
handlerObj.setAttribute('data-clipboard-target','#'+obj.textID);
}
}
ClipBoard.prototype.attach = function(){
if(this.isActive){ // 对象已经被实例化
return;
}
var tip = '复制';
if(this.type === 'cut'){
tip = '剪切';
}
this.isActive = true;
if(this.isPlugin){
var clip = new Clipboard('#'+this.handlerID);
clip.on('success', function(e) {
alert(tip+'成功,可通过Ctrl+V进行粘贴!');
});
clip.on('error', function(e) {
alert(e.action+'操作失败!');
});
}else if(window.attachEvent){
var self = this;
var handlerObj = document.getElementById(this.handlerID);
handlerObj.attachEvent('onclick',function(){
var text = '';
if(self.isAttr){// 复制属性值
text = handlerObj.getAttribute('data-clipboard-text');
}else{
var textObj = document.getElementById(self.textID);
text = textObj.value || textObj.innerHTML;
}
window.clipboardData.setData('Text',text);
alert(tip+'成功,可通过Ctrl+V进行粘贴!');
});
}else{
alert('浏览器版本过低,不支持该插件!')
}
}
var c1 = new ClipBoard({
handlerID: 'Copy_btn1', //点击的那个按钮
textID: 'card_num', //要复制的文本
isAttr: false,
type:'copy'
});
c1.attach();
var c2 = new ClipBoard({
handlerID: 'Copy_btn2',
textID: 'card_pass',
isAttr: false,
type:'copy'
});
c2.attach();
var c3 = new ClipBoard({
handlerID: 'Copy_btn3',
textID: 'card_num1',
isAttr: false,
type:'copy'
});
c3.attach();
var c4 = new ClipBoard({
handlerID: 'Copy_btn4',
textID: 'card_pass1',
isAttr: false,
type:'copy'
});
c4.attach();
百度分享
<script>
window._bd_share_config={
"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"1","bdSize":"16"},
"share":{"bdSize":16}
};
with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
<script/>
html
<div class="bdsharebuttonbox">
<a href="#" data-cmd="more">分享到:</a>
</div>
html的书写,div添加类bdsharebuttonbox,给a添加data-cmd="more",如果是鼠标移入出现分享框,添加class="bds_more"
如果不要a的自带样式,删除link链接或者删除a的用js添加的类样式,或许重写自动生成的.bdshare-button-style0-16 a这个样式比较好
删除链接参考
var deleteMk="0";
function deleteBdStyle(){
var links=$("link");
for(var i=0;i<links.length;i++){
if($(links.get(i)).attr("href").indexOf("share_style0_16.css")!=(-1)){
$(links.get(i)).remove();
deleteMk="1";
}
}
if(deleteMk=="0"){
setTimeout(function(){deleteBdStyle();},100)
}else{
$(".nav2").show();
}
}
deleteBdStyle();
remove
移除所有 <p> 元素:
("p").remove();
});
亲自试一试
定义和用法
remove() 方法移除被选元素,包括所有文本和子节点。
该方法不会把匹配的元素从 jQuery 对象中删除,因而可以在将来再使用这些匹配的元素。 返回匹配的元素,比如<p>This is a paragraph.</p>
但除了这个元素本身得以保留之外,remove() 不会保留元素的 jQuery 数据。其他的比如绑定的事件、附加的数据等都会被移除。这一点与 detach() 不同。
语法
$(selector).remove()
$(document).ready(function(){
$("button").click(function(){
$("body").append($("p").remove());
});
});
get()
定义和用法
get() 方法获得由选择器指定的 DOM 元素。
语法
$(selector).get(index)
css元素晃动
@keyframes swing{
20%{transform:rotate(15deg)}
40%{transform:rotate(-10deg)}
60%{transform:rotate(5deg)}
80%{transform:rotate(-5deg)}
100%{transform:rotate(0deg)}
}
@-webkit-keyframes swing{
20%{-webkit-transform:rotate(15deg)}
40%{-webkit-transform:rotate(-10deg)}
60%{-webkit-transform:rotate(5deg)}
80%{-webkit-transform:rotate(-5deg)}
100%{-webkit-transform:rotate(0deg)}
}
@-moz-keyframes swing{
20%{-moz-transform:rotate(15deg)}
40%{-moz-transform:rotate(-10deg)}
60%{-moz-transform:rotate(5deg)}
80%{-moz-transform:rotate(-5deg)}
100%{-moz-transform:rotate(0deg)}
}
.btn a:hover div{
-webkit-animation: swing 1s .2s ease both;
transform-origin: center top;
}
子元素的margin合并
给父元素加上 padding/border/overflow:hidden(IE要添加zoom:1),
或者给父元素/子元素设置为 float/position:absolute.
(CSS2.1规定浮动元素和绝对定位元素不参与margin折叠)。
居中
或许可以尝试text-align:center;
移动端全屏滑动
用zepto.js 里的swipe事件,和轮播图类似
setTimeout传参问题
function translate(ele,num,end){
ele.animate({"marginTop":"-666px"},1000,"linear",function(){
ele.css("marginTop","0")
if(num==0){ //停止时确定位置
ele.animate({"marginTop":-(end*66)+"px"},(end*100),"linear");
}else{
num--; //滚动两轮,从-666px到0
translate(ele,num,end);
}
});
}
// setTimeout( translate($(".num1"),2,1),100);传参无效
setTimeout(function(){translate($(".num2"),2,2);},400);
动画
如果是有规律的动画,可以是从0%到100%
ie7 overflow-hidden
css兼容ie7:
做页面的时候用负边距居中的时候在IE7下面,父节点中的overflow:hiden失效的问题,查阅了一些资料,总结一下解决方法。
问题原因:
当父元素的直接子元素或者下级子元素的样式拥有position:relative属性时,父元素的overflow:hidden属性就会失效。
解决方法:
我们在IE7内发现子元素会超出父元素设定的高度,即使父元素设置了overflow:hidden。
解决这个bug很简单,在父元素中使用position:relative;即可解决该bug,就是用到overflow的父节点中增加相对定位即可。
图片放大镜效果
改变弹窗的img路径,还原图片大小
移入移出
mouseleave和mouseout区别
mouseenter和mouseover区别
提示
[if lt IE 7]>
<div style="position:fixed;left:0;top:0;width:100%;height:50px;background:red;color:#fff;border-bottom:1px
solid #fff;text-align:center;line-height:50px;font-size:16px;z-index: 999999">
您使用的浏览器版本过低,可能会影响到您浏览本网页,建议您升级您的浏览器。
</div>
<![endif]
再给这段加个注释符号
设置网页在线人工客服
有时候可能会出现这些问题
QQ图片20180411151331.png QQ图片20180411151339.png
访问 http://shang.qq.com/v3/widget.html
在顶部导航那里点击【推广工具】
设置之后会出现如下图,有时候代码里没有加入qq号,可能要自己加入
2018-04-11_151510.png
核心代码
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=QQ号 &site=qq&menu=yes"></a>
css3实现效果
边框外发光效果
{ -webkit-box-shadow: 0px 10px 20px 1px #b9b4b4;
box-shadow: 0px 10px 20px 1px #b9b4b4;
z-index: 1;
position: relative;
}
第一个参数,水平位移,第二个参数,垂直位移,第三个参数,模糊范围,第四个参数,阴影范围
加层级是为了能让元素不被周围元素覆盖阴影
border的虚线
width: 100%;
height: 1px;
background-image: linear-gradient(to right, #ccc 0%, #ccc 50%, transparent 50%);
background-size: 8px 1px;
background-repeat: repeat-x;
比原来的间距宽一些
虚线效果.png
阴影滑动覆盖元素效果
.country a:before{
content:'';
position: absolute;
width: 0px;
height: 100%;
left: 0px;
display: block;
transition:all .6s ease;
-moz-transition: all .6s ease;
-o-transition: all .6s ease;
-webkit-transition: all .6s ease;
}
.country a:hover:before{
content:'';
background: #000;
opacity: 0.45;
width: 232px;
filter: alpha(opacity=40);
}
有一种从左到右的滑动效果,这里利用伪类实现,初始宽度为0。如果初始宽度不为0 ,利用transform:translateX()这种属性则会影响旁边的元素,,
2018-03-27_155415.png
多行文本溢出
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
height: 2.8rem;
display: -webkit-box;
设置高度和overflow:hidden是为了兼容
calc
需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px);
任何长度值都可以使用calc()函数进行计算;
calc()函数支持 "+", "-", "*", "/" 运算;
calc()函数使用标准的数学运算优先级规则;
checkbox的美化样式
实现思路,真实的input不可见,利用伪类来模拟复选框,before模拟边框,after模拟√,实现效果如图
2018-06-19_154909.png
html
<div class="checkbox">
<input type="checkbox" id="checkbox">
<label for="checkbox"><span>Remember the password</span></label>
</div>
css
.checkbox{
position: relative;
height: 20px;
}
//真实的input不可见
.checkbox input[type='checkbox']{
position: absolute;
left: 0;
top: 0;
width: 20px;
height: 20px;
opacity: 0;
}
//模拟checkbox的边框
.checkbox label:before{
content:'';
left: 0;
top: 0;
width: 20px;
height: 20px;
border: 1px solid #ddd;
display: inline-block;
box-sizing: border-box;
position: absolute;
border-radius: 2px;
}
//模拟√
.checkbox label:after{
content:'';
width: 6px;
height: 12px;
border: 0;
position: absolute;
top: 3px;
left: 7px;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
background: #fff;
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
/*transition: all 0.3s ease;
-webkit-transition: all 0.3s ease;
-moz-transition: all 0.3s ease;*/
position: absolute;
}
.checkbox label span{
margin-left: 25px;
}
//选中时的边框和背景
.checkbox input[type='checkbox']:checked+label:before{
background: #396af3;
border-color: #396af3;
}
//选中时的√
.checkbox input[type='checkbox']:checked+label:after{
background: #396af3;
}
多个背景图
background:url(https://cdn.it120.cc/images/weappshop/arrow-right.png) no-repeat 705rpx center , url(https://cdn.it120.cc/images/weappshop/addr-line.png) no-repeat center bottom;