跟名站学前端之Brian Hoff Design

前端开发whqet,csdn,王海庆,whqet,前端开发专家

如果您是资深前端er,经验丰富、富有创意,也有可能面对新项目一时踌躇;如果您是前端初学者,可能胸中沟壑,无从下手。因此,多多赏析优秀网站,开阔视野、寻求灵感、解析技术显得很有必要。我们从国内外网页欣赏站(Awwwards\CSS Winner\Best CSS等)的收录作品中,选择一些有代表性的作品进行解析,欣赏、研读、提高,开始一个全新的系列博客《跟名站学前端》,希望对大家有所帮助。今天开篇立意,来看第一博,我跟名站学前端之Brian Hoff Design。

------------------------------------------------------------

--我参加了博客之星评选,如果你喜欢我的博客,求投票,您的支持是我的动力之源走起!

-----------------------------------------------------------------------------------------

欣赏

Brain Hoff Design是一个面向web和移动平台的交互设计机构(美国),网站界面如下。


解析

明快、鲜亮的动画是网站的亮点,首页采用全屏背景、大文字、侧栏菜单等各站主流设计,设计简洁、色彩明快、交互十足是一个不错的设计。网站里面用到的一些鲜活的交互动画是本博文的重点,立体背景按钮、效果切换的导航按钮、书架样式的图片响应、箭头遮罩图片响应等。

立体背景的按钮

效果切换的导航按钮


书架样式的图片响应


箭头遮罩图片响应


实现

下面我们分别来实现一下,源码我放在了codepen,请大家移步

----------------

----------------------------------------

在线研究点击这里,下载收藏点击这里。

----------------------------------------

---------------


立体背景按钮

立体背景的按钮主要使用css3 3d、css3 transform实现,过程如下,html如下。

<!--立体背景按钮-->
<div class="btnContainer">
  <div class="btnBg"></div> 
  <a class="btnBtn" href="#">Read our latest case study</a>
</div>

css是关键,如下代码所示。

/*立体背景按钮*/
.btnContainer{
  position: relative;
  width:300px;
  height:60px;
  margin:20px;
}
.btnContainer .btnBg{
  position: absolute;
  background-color: #000;
  width:300px;
  height:60px;
  z-index:-1;
  transform: perspective(200px) rotateY(9deg) rotateX(-3deg) translateX(6%) translateZ(-10px) scale(1.05);
  transition: all 0.25s ease-in-out;
}
.btnContainer:hover .btnBg{
  transform: perspective(200px) rotateY(-5deg) rotateX(-3deg) translateX(-5%) translateY(2%) translateZ(-20px) scale(1.2);
}
.btnContainer .btnBtn{
  display: inline-block;
  text-decoration: none;
  font-size: 1.5em;
  color: #FFF;
  text-align: center;
  line-height: 60px;
}

切换效果的导航菜单

切换效果的导航菜单主要由两个部分的动画,一个是外圆环,一个是内侧动画。外部的圆环容易实现,改变圆环大小即可。内侧的三条线用三个div实现(也可以用:before和:after伪对象实现,简化问题起见,直接来最简单的),相应之后中间的边长,两侧的旋转。

html如下

<!-- 效果切换的导航按钮 -->
<a class="menuContainer" href="#">  
  <div class="line"></div>
  <div class="line"></div>
  <div class="line"></div>
</a>

css部分实现

/*导航效果切换的导航按钮*/
.menuContainer{
  display: inline-block;
  position: relative;
  top:0px;
  left:0px;
  padding:20px 16px;
  border: 5px solid #000;
  border-radius:100%;
  margin:20px;
  text-align: center;
  transition: all 0.25s ease-in-out;
  background-color: #fff;
}
.menuContainer .line{
  background-color: #000;
  margin-bottom: 1px;
  height: 3px;
  width: 20px;
  transition: all 0.25s ease-in-out;
}
.menuContainer:hover{
  padding:26px 22px;
  top:-8px;
  left:-8px;
}
.menuContainer:hover .line:nth-child(1){
  width:13px;
  transform:rotateZ(-45deg) translateX(-2px) translateY(-2px);
}
.menuContainer:hover .line:nth-child(2){
  width:24px;
}
.menuContainer:hover .line:nth-child(3){
  width:13px;
  transform:rotateZ(45deg) translateX(-2px) translateY(2px);
}

书架样式图片响应

书架样式图片响应的实现过程如下,先看html

<!-- 书架样式图片响应 -->
<a class="bookContainer" href="#">
	<img class="bookImg" src="http://brianhoffdesign.com/images/mags/netmag.jpg">
	<div class="bookBtn">View</div>
</a>

css如下。

/* 书架样式图片响应 */
.bookContainer{
  position: relative;
  margin:50px;
  width:160px;
}
.bookContainer:before{
  content:"";
  width:300px;
  height:50px;
  border-bottom:8px solid #666;
  background-color: #fff;
  position: absolute;
  left:-70px;
  bottom:-5px;
}
.bookContainer img{
  position: relative;
  bottom:0;
  transition: all 0.25s ease-in-out;
}
.bookContainer .bookBtn{
  width: 100px;
  height:30px;
  line-height: 30px;
  text-align: center;
  border:5px solid #666;
  position: absolute;
  z-index:-10;
  left:20px;
  top:-30px;
  opacity: 0;
  transition: all 0.25s ease-in-out;
}
.bookContainer:hover .bookBtn{
  top:30px;
  opacity: 1;
}
.bookContainer:hover img{
  bottom:10px;
}

箭头遮罩图片响应

可以使用-webkit-mask-image,也可以使用svg mask来实现,相对比较复杂,我们改日再来详细教程。先看使用svg的方案,简单起见,用圆形先代替。

html文件,.picContainer作为整个容器的的同时,显示背景图片,.bg用于显示hover之后的半透明遮罩颜色,svg mask显示清晰的部分。

<div class="picContainer">
  <div class="bg"></div>
  <svg class="svg" x="0px" y="0px" viewBox="0 0 420 420" >
    <defs>
      <mask id="mask">
        <circle class="circle" cx="-100" cy="200" r="100" fill="white"></circle>
      </mask>
    </defs>
    <image xlink:href="http://brianhoffdesign.com/assets/thumbnail-prizerebel.jpg" mask="url(#mask)" width="420" height="420" x="0" y="0"></image>
  </svg>
</div>

svg的动画我们用css实现。firefox浏览器的运动遮罩尚有问题,待研究

.picContainer{
  margin:100px 80px;
  width: 420px;
  height: 420px;
  position: relative;
  background: url(http://brianhoffdesign.com/assets/thumbnail-prizerebel.jpg) no-repeat;
}
.picContainer .svg{
  width:420px;
  height: 420px;
  position: absolute;
}
.picContainer .circle{
  transform: translate(-100px);
  opacity: 0;
  transition: all .5s ease-in-out;
}
.picContainer:hover .circle{
  transform: translate(100px);
  opacity: 1;
}
.picContainer .bg{
  width: 420px;
  height: 420px;
  background-color: #fdfdfd;
  position: absolute;
  transition: all .5s ease-in-out;
  opacity: 0;
}
.picContainer:hover .bg{
  opacity: 0.9;
}

感谢您耐心读完,如果对您有帮助,请支持我

----------------------------------------------------------

前端开发whqet,关注web前端开发,分享相关资源,欢迎点赞,欢迎拍砖。
---------------------------------------------------------------------------------------------------------

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值