当前位置: 首页 > news >正文

有关“滑动门”代码研究

废话先不说,先上代码:

/****************************************
此代码来源于CSS-TRICKS,以下信息为博主发布:
CREATED BY: Brandon Setter
WEBSITE: http://Media-Sprout.com
FOLLOW ME: twitter.com/bsetter
CREATION DATE: 10/2009
VERSION 1.0
*****************************************/

首先是HTML代码:

1 <div class="clearbutton">
2     <a class="GlobalOrangeButton" href="#">
3         <span>So Neat!</span>
4     </a>
5 </div>

然后是CSS代码:

 1 /* GLOBAL ORANGE BUTTON *****************************/
 2 a.GlobalOrangeButton span {
 3 background: transparent url('images/button_left_orange.png') no-repeat 0 0;
 4 display: block;
 5 line-height: 22px;
 6 padding: 7px 0 5px 18px;
 7 color: #fff;
 8 }
 9 
10 a.GlobalOrangeButton {
11 background: transparent url('images/button_right_orange.png') no-repeat top
12
13 right;
14 display: block;
15 float: left;
16 height: 34px;
17 margin-right: 6px;
18 padding-right: 20px;
19 text-decoration: none;
20 font-family: Arial, Helvetica, sans-serif;
21 font-size:12px;
22 font-weight:bold;
23 }
24 
25 a.GlobalOrangeButton:hover span {
26 background-position: 0 -34px; color: #fff;
27 }
28 
29 a.GlobalOrangeButton:hover {
30 background-position: right -34px;
31 }

长型left

 

短型right

 

“滑动门”原理

  其实我们所称“滑动门”是一种用于制作图片按钮的技术,可以通过纯CSS实现。

  应用一张长型left图片及一张短型right图片,长型left图片居于元素背景的左侧,短型right图片居于另一元素的右侧,文字位于短型right图片元素内。如此,当文字增加时,会使所在元素的width变长,即产生向右移动,就像滑动。长型left图片多余部分位于短型right图片之下,并由于超出最外层box element的width导致overflow,即被隐藏,当短型right图片滑动时,被隐藏的部分便展现出来。

  源码块中加粗及有下划线部分是笔者认为最为重要的部分,其他只是对样式的补充。

源码分析

  background部分就不赘述了,有基础的读者应该很容易就看懂了。这里需要提到的是,长型left图片应用在了<span>元素上,短型right图片则应用在了<a>元素上,为什么这样做呢?个人认为,这样在扩展时,<a>元素的热点区域也得到了扩展。这样,当内容扩展了之后,整个按钮依然是可点击的,而无盲区。

  这里,<span><a>两个元素都被设置为display:block;这样,可以比较自由地调整元素的宽度及高度,以完整地展示出作为背景的按钮。同时,应该来说,也使得float得到了应用。

  其他部分的代码无非是调整了整个元素的宽度及高度以及字体等样式,再就是涉及到hover样式的变幻。

  

  其实,总的说来,CSS-TRICKS所展示出来的有关滑动门,其实也有关于CSS Sprite的代码是比较简单的,没有太多复杂的成分。说起来,这应该是我们这些编码者所需要努力做到。

转载于:https://www.cnblogs.com/orange-ven/p/4657309.html

相关文章:

  • 泛型的省略
  • 关于WinPE安装操作系统
  • SSO统一身份认证
  • android 入门-工程属性介绍
  • JavaScript prototype 属性
  • 7月20号总结
  • XMLHttpRequest对象
  • Collaborative filtering
  • 2012 蓝桥杯 第39级台阶 【初赛试题】
  • Lightoj1009 Back to Underworld(带权并查集)
  • 2013蓝桥杯 前缀判断 【初赛试题】
  • 2013蓝桥杯 画表格 【模拟赛】
  • 如何批量转换为百度经纬度
  • 2012 蓝桥杯 放棋子 【初赛试题】
  • 2012 蓝桥杯 大数乘法 【初赛试题】
  • 分享的文章《人生如棋》
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ECMAScript入门(七)--Module语法
  • hadoop集群管理系统搭建规划说明
  • iOS编译提示和导航提示
  • JavaScript 基本功--面试宝典
  • Javascript 原型链
  • JavaScript设计模式之工厂模式
  • Java方法详解
  • Java精华积累:初学者都应该搞懂的问题
  • Mocha测试初探
  • Promise面试题2实现异步串行执行
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Vim 折腾记
  • Vue2 SSR 的优化之旅
  • 基于 Babel 的 npm 包最小化设置
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 记录:CentOS7.2配置LNMP环境记录
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 详解移动APP与web APP的区别
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • (003)SlickEdit Unity的补全
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • ***测试-HTTP方法
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .FileZilla的使用和主动模式被动模式介绍
  • .net 发送邮件
  • .NET 中让 Task 支持带超时的异步等待
  • .Net(C#)自定义WinForm控件之小结篇
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET处理HTTP请求
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @hook扩展分析
  • [APIO2015]巴厘岛的雕塑
  • [AutoSar NVM] 存储架构
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C# 网络编程系列]专题六:UDP编程
  • [CISCN2019 华东南赛区]Web4