一、行走的线条。

  • 效果图(加载可能会慢一点儿,请稍等...):

  • html代码:
 <div class="movingLines">
<img src="data:images/ser2.jpg" alt=""><!-- 背景图片-->
<div class="cover cover2"><!-- 遮盖层-->
<div class="innerBor"> <!--四根线条-->
<p class="topHr"/>
<p class="rightHr"/>
<p class="leftHr"/>
<p class="bottomHr"/>
</div> <div class="content"><!-- 遮盖层内容 -->
<img class="serIcon" src="data:images/ser_pre2.png" alt="">
<h6><a href="">家具与软装顾问</a></h6>
<p>除了家居设计,特别推出空间软装布置顾问,2对1全程指导,为您提供功能于色彩建议、配饰与摆设建议,杜绝爱巢变成“杂货铺”</p>
</div>
</div>
</div>
  • 思路一:先不要管线条的动画效果,首先分析出静态的布局,将遮盖层与底层布局完成,调试好层级关系和位置关系。通过定位使得 .content 遮盖层和 .innerBor 都位于整个div的中间部分,并且是重合的。
  • css样式:
.movingLines {
width: 350px;
height: 246px;
position: relative;
}
 /*背景图片*/
.movingLines img{ width: 100%; height: 100%; }
/*遮盖层*/
.movingLines .cover2{
        width: 100%;
height: 100%;
position: absolute;
top:0px;
left: 0px;
text-align: center;
transition: all .5s linear;
background: #6DD3D1;
} .movingLines .innerBor{ width: 90%;
height: 90%;
position: absolute;
top: 5%;
left: 5%;
display: block;
border: 1px solid #747474;
transition: all .5s linear; } .movingLines .content{
width: 90%;
height: 90%;
position: absolute;
top: 5%;
left: 5%;
text-align: center;
background: red;
}
  • 思路二:当思路一种的布局弄好以后,遮盖层中的.innerBor是位于.content的底层的。由于.content静态的时候就存在外边框的,但是鼠标浮动的时候,这个边框依然是存在的,但是不能直接给.content 加边框,因为.innerBor是位于它的下一层,不论怎么修改底层的东西,都不可能遮盖上一级的内容。所以这个静态的边框线一定是.innerBor的,并且是border,而不是outline(这里不赘述二者的区别)。由于二者是同样的大小,并且没有设定overflow:hidden,这样给.innerBor加 border的时候,边框线就会在content的非遮盖范围内,就可以看见了。
  • 思路三:这下只需要给innerBor加上移动的线条就行了。怎么加?不可能使用border,因为它已经被静态的页面占用了,就算没有占用,css里面也没有适合的api.换一个思路,这四根线像不像只有1px的四个div,在不断的增加高度或者宽度?是的没错,但是html中不建议使用空的div,所以把其改成p标签,让其display:block;就是一个块元素了,就可以改变宽高了。
  • 思路四:将其定位到四个角的位置。注意:起始位置。此外由于所有的p标签都位于.innerBor的内部,所以定位的时候定位位置是-1px;这样才能遮盖住border。
  • css代码
.movingLines .topHr{
display: block;
position: absolute;
top: -1px;
right:;
width: 0%;
height: 1px;
background: white;
transition: all .5s linear;
} .movingLines .rightHr{
display: block;
position: absolute;
top:;
right:-1px;
width: 1px;
height: 0%;
background: white;
transition: all .5s linear;
} .movingLines .bottomHr{
display: block;
position: absolute;
bottom: -1px;
left:;
width:;
height: 1px;
background: white;
transition: all .5s linear;
} .movingLines .leftHr{
display: block;
position: absolute;
bottom:;
left:-1px;
width: 1px;
height: 0%;
background: white;
transition: all .5s linear;
}
  • 思路五:添加鼠标浮动事件,不废话了直接上代码
.movingLines:hover .topHr{
width: 100%;
transition: all .5s linear;
} .movingLines:hover .rightHr{
height: 100%;
transition: all .5s linear;
} .movingLines:hover .bottomHr{
width: 100%;
transition: all .5s linear;
} .movingLines:hover .leftHr{
height: 100%;
transition: all .5s linear;
} .movingLines:hover .cover{
background: rgba(0,0,0,.7);
transition: all .5s linear;
}
  • 完整的css代码:不仅有改变四根线的动画代码,还有改变遮盖层的透明度、遮盖层中文字内容放大缩小、透明度的动画代码,图片放大缩小、平移的代码。是不是很全?
 .movingLines {
width: 350px;
height: 246px;
position: relative;
} .movingLines img{
width: 100%;
height: 100%;
}
.movingLines .cover2{
width: 100%;
height: 100%;
position: absolute;
top:0px;
left: 0px;
text-align: center;
transition: all .5s linear;
background: #6DD3D1;
} .movingLines .innerBor{ width: 90%;
height: 90%;
position: absolute;
top: 5%;
left: 5%;
display: block;
border: 1px solid #747474;
transition: all .5s linear; } .movingLines .content{
width: 90%;
height: 90%;
position: absolute;
top: 5%;
left: 5%;
text-align: center;
background: red;
} .movingLines .topHr{
display: block;
position: absolute;
top: -1px;
right:;
width: 0%;
height: 1px;
background: white;
transition: all .5s linear;
} .movingLines .rightHr{
display: block;
position: absolute;
top:;
right:-1px;
width: 1px;
height: 0%;
background: white;
transition: all .5s linear;
} .movingLines .bottomHr{
display: block;
position: absolute;
bottom: -1px;
left:;
width:;
height: 1px;
background: white;
transition: all .5s linear;
} .movingLines .leftHr{
display: block;
position: absolute;
bottom:;
left:-1px;
width: 1px;
height: 0%;
background: white;
transition: all .5s linear;
} .movingLines .serIcon{
width: 40px;
height: 40px;
margin-top: 60px;
transition: all .5s linear;
}
.movingLines h6 {
transition: all .5s linear;
}
.movingLines h6 a{
color: white;
font-size: 16px; }
.movingLines .content p{
opacity:;
font-size: 14px;
transform: scale(0,0);
transition: all .5s linear; } .movingLines:hover .serIcon{
transform: translateY(-30px) scale(.5,.5);
transition: all .5s linear;
} .movingLines:hover h6{
transform: translateY(-30px);
transition: all .5s linear;
}
.movingLines:hover p{
opacity:;
transform: scale(1,1);
transition: all .5s linear;
}
.movingLines:hover .topHr{
width: 100%;
transition: all .5s linear;
} .movingLines:hover .rightHr{
height: 100%;
transition: all .5s linear;
} .movingLines:hover .bottomHr{
width: 100%;
transition: all .5s linear;
} .movingLines:hover .leftHr{
height: 100%;
transition: all .5s linear;
} .movingLines:hover .cover{
background: rgba(0,0,0,.7);
transition: all .5s linear;
} .movingLines .cover:hover span{
animation: service_span_anim 1s linear forwards;
} @keyframes service_span_anim{
from{border-width: 1px;border-color: #000;}
to{border-width: 0px;border-color: red;}
}
二、置顶导航栏
  • 效果图(加载可能会慢一点儿,请稍等...):

  • html代码和css代码就不提供了,大家可以写一个<header></header> 设置它的宽100%和高80px,加一个背景色模拟一个简单的导航栏就行了。
  • 思路:导航栏原本只是静态的在一个特定的位置,并且背景为(background:transparent;)透明的。但随着滑动鼠标,会固定到顶部和回到原来的位置。
  • 说明:这里面,不仅涉及到固定定位还涉及到对滚动条的监听,因为是根据滚动条的位置来设定导航栏的的位置的。这里需要使用一些js来实现,我采用的是非原生的js----jquery,不知道的小伙伴自行查阅资料(友情链接:http://www.runoob.com/jquery/jquery-tutorial.html)。
  • 呈上js代码:
$(function(){

    var isToTop = false;//设置一个标记,来记录导航栏是否位于顶部
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();//获取滚动条
if(scrollTop>80&&!isToTop){//当滚动条的高度大于80px,并且导航栏不是位于顶部的时候,通过jq给header添加css样式使其固定定位到浏览器可视窗口的顶部
$("header").css({
"position":"fixed",
"top":"0",
"background":"rgb(51,51,51)",
"transition":"all .5s linear"
}); isToTop = true;
}
//当滚动条的高度小于80px,并且导航栏是位于顶部的时候,通过jq给header添加css样式使其回到原始的位置。
if(scrollTop<80&&isToTop){
$("header").css({
"position":"absolute",
"top":"40px",
"background":"transparent",
"transition":"all .5s linear"
});
isToTop = false;
}
});
});
  • 其实这个案例只要懂得用js获取滚动条对象,并获取其高度。以及会用js给html页面元素添加css样式,就可以实现。js是不是很强大?快学起来吧。

[知了堂学习笔记]_css3特效第二篇--行走的线条&&置顶导航栏的更多相关文章

  1. css3特效第二篇--行走的线条&&置顶导航栏

    一.行走的线条. 效果图(加载可能会慢一点儿,请稍等...): html代码: <div class="movingLines"> <img src=" ...

  2. [知了堂学习笔记]_css3特效第一篇--旋转的背景&翻书效果

    一.html遮盖层与css3的旋转动画 >效果图(加载可能会慢一点儿,请稍等...): >实现思路:在一个大的div中装入一个底层img和顶层的div(里面的内容按照以上图片呈现的样式布局 ...

  3. 【知了堂学习笔记】java 自定义异常

    java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...

  4. [知了堂学习笔记]_牵线Eclipse和Tomcat第二篇 —— 安装Tomcat&&添加Tomcat到Eclipse

    来了来了~~~~~我们的"织女"--Tomcat来了,牛郎们等急了吧!哈哈! 一.安装Tomcat 下载地址:http://tomcat.apache.org/download-7 ...

  5. [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse

    一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...

  6. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第3讲(逻辑方法的实现)

    整体展示: 上一讲实现了诸多对象,这次我们就需要实现许多逻辑方法,如控制飞机移动,判断子弹击中敌机,敌机与英雄飞机相撞等等.并且我们在实现这些功能的时候需要计时器去调用这些方法.setInterval ...

  7. 【知了堂学习笔记】java 编写几种常见排序算法2

    排序的分类: 1.直接选择排序 它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~ ...

  8. 【知了堂学习笔记】java 编写几种常见排序算法

    排序的分类: 一.交换排序 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动. 1.冒泡 ...

  9. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第1讲(实现思路与游戏界面的实现)

    整体效果展示: 一.实现思路 如图,这是我完成该项目的一个逻辑图,也是一个功能模块完成的顺序图. 游戏界面的完成 英雄飞机对象实现,在实现发射子弹方法过程中,又引出了子弹对象并实现.在此时,英雄飞机能 ...

随机推荐

  1. 微信小程序之页面路由

    路由方式 简介 对于路由的触发方式以及页面生命周期函数如下: 路由方式 触发时机 路由前页面 路由后页面 初始化 小程序打开的第一个页面   onLoad, onSHow 打开新页面 调用 API w ...

  2. sql优化原则与技巧

    加快sql查询是非常重要的技巧,简单来说加快sql查询的方式有以下几种:一.索引的引用 1.索引一般可以加速数据的检索速度,加速表与表之间的链接,提高性能,所以在对海量数据进行处理时,考虑到信息量比较 ...

  3. vuex 基本用法、兄弟组件通信,参数传递

    vuex主要是是做数据交互,父子组件传值可以很容易办到,但是兄弟组件间传值,需要先将值传给父组件,再传给子组件,异常麻烦. vuex大概思路:a=new Vue(),发射数据'msg':a.$emit ...

  4. open live writer实现多博客同步发送

    转载请注明出处 本文出自Hansion的博客 很多人都有多个博客平台同时使用,如CSDN.博客园.开源中国等,但是在其中一个平台上写完博客,想同样发表到其他平台上,这需要我们复制粘贴或者博客搬家,这往 ...

  5. jQuery 遍历函数(八)

    函数 描述 .add() 将元素添加到匹配元素的集合中. .andSelf() 把堆栈中之前的元素集添加到当前集合中. .children() 获得匹配元素集合中每个元素的所有子元素. .closes ...

  6. chrome调试工具高级不完整使用指南(实战一)

    三.chrome调试工具实战 3.1 获取界面对应的HTML和修改样式 我们以博客园为例子来分析. 通过上面的操作就可以定位到对应的HTML代码 左侧菜单显示的就是当前指定元素层叠样式的一个情况 上面 ...

  7. SQLAlchemy基础操作二

    多线程示例 import time import threading from sqlalchemy.ext.declarative import declarative_base from sqla ...

  8. C# war3 巨魔精灵 minimap

    弃坑LOL后,无聊的时候玩玩 war3的RPG地图,巨魔与精灵.  玩了一段时间精灵....然后玩魔结果总是找不到人.所以就有了这个想法. 代码纯粹靠搬运. 说下原理,网上有份代码,可以查看当前选中目 ...

  9. 数据结构-栈(应用篇)之快速排序法-C和C++的实现

    一.原理解析 快速排序法: 基本思路是,从第一个元素开始,把所有比它大的元素放在它后面,把所有比它小的元素放前面.然后划分它前面和后面的所有元素,分别再做快速排序,直到无法再划分为止. 在以下程序案例 ...

  10. 部署spring Boot项目到tomcat

    导火线 : 遇到两次本地可以跑通,部署到服务器tomcat就出问题的情况了,为了不忘记,记录在此吧 第一次部署到服务器上是静态资源访问不了,花了一些时间,是因为application.yml中的 mv ...