该模板为一个hover效果的样式库,由一些常用的效果以及GitHub上的开源项目“Hover.css”的2D Transitions部分构成。
“hover”效果为鼠标移入元素时元素发生变化,移出时还原。
{{hovers}}
首先需要载入该样式库,之后才能开始使用。其中规定的内容(也就是定义的类,class)必须写在HTML标签的class属性中。
除hover状态切换(指交替、遥控、翻转切换这三个效果)以外,其他效果hovers-
前缀都是必须的,这用于与其他类区分并提供一些基础的样式。
可以理解为:
hover-
hovers-
如将用户框模板{{用户 笨蛋}}施加“振出”效果:
<div class="hovers-buzz-out">{{用户 笨蛋}}{{clear}}<!-- clear模板消除笨蛋模板自带的浮动 --></div>
被施加特效的元素将变为行内块(inline-block),若这对排版发生影响,请手动覆盖。
在使用html标签时请注意:换行将产生额外的p标签,请在换行时使用注释<!-- -->
。
添加active
类将直接显示hover的效果。
该样式库还提供了几种利用hover进行状态切换的效果。
除“遥控”外,其他效果在父容器内均使用-before
和-after
来表示状态切换前和切换后显示的内容。
交替
可以在hover-change
后再添加一个flash
类,提供一个hover进入时的闪烁效果。
<div class="hover-change">
<div class="hover-change-before">[[file:友利奈绪侧面正常.jpg|300px]]</div>
<div class="hover-change-after">[[file:友利奈绪侧面内衣.jpg|300px]]</div>
</div>
遥控
<div class="hover-remote">
<div style="width:100px; height:100px; background:blue"></div>
<div class="hover-remote-target" style="left:300px;">
<div style="width:100px; height:100px; background:red;"></div>
</div>
</div>
交替效果的hover-change-after
和遥控效果的hover-remote-target
都用到了css绝对定位,以各自的父元素hover-change
和hover-remote
为原点,交替效果默认位置偏移为top:0; left:0
,遥控效果默认位置偏移为top:0; left:100%
。它们的值都可以覆盖,若设置了相反的方向,则对应的默认位置偏移将变为auto
(top和left本身的原始默认值),例如设置了bottom:10px
,则默认的top:0
将变为top:auto
。
过渡时长默认为0.5秒,若要修改请在对应节点设置transition-duration
属性。
标签栏
<!-- 由于标签栏内容为定位元素,这里需要使用外边距为其留出位置 -->
<div class="hover-tab-mode" style="margin-bottom:200px;"><!--
-->{{#vardefine:tabButtonStyle|width:70px; height:25px; text-align:center; line-height:25px; background:#666; color:white; border:1px #ccc solid; display:inline-block; cursor:pointer}}<!--
-->{{#vardefine:tabPanelStyle|position:absolute; top:25px; left:0; width:400px; height:200px; border:1px #666 solid; background:#eee;}}<!--
-->
<div class="hover-remote">
<div style="{{#var:tabButtonStyle}}">标签一</div>
<div style="{{#var:tabPanelStyle}}">标签内容一</div> <!-- 默认显示的标签栏内容不要添加hover-remote-target -->
</div>
<div class="hover-remote">
<div style="{{#var:tabButtonStyle}}">标签二</div>
<div class="hover-remote-target" style="{{#var:tabPanelStyle}}">标签内容二</div>
</div>
<div class="hover-remote">
<div style="{{#var:tabButtonStyle}}">标签三</div>
<div class="hover-remote-target" style="{{#var:tabPanelStyle}}">标签内容三</div>
</div>
</div>
这里就实现了一个以hover制作的标签栏。在hover-remote
外层div添加hover-tab-mode
后,其中所有的hover-remote-target
元素在触发hover效果时定位都会以hover-tab-mode
的元素为基点。
翻转切换
<div class="hover-turn" style="width:105px; height:105px"> <!-- 由于效果本身的原因,必须手动设置宽高 -->
<div class="hover-turn-before">
{{image|图片=Nav-Blend s.png|显示类型=inline-block|resize=925|width=102.75|height=102.25|x={{#expr:112.75 * 0}}|y={{#ifeq:{{PAGENAME}}|樱之宫莓香|113.5|0}}}}
<!-- 这里用到了一些雪碧图技术,详情可以参考template:image,普通的以[[file:]]格式引用的图片也是可以正常使用该效果的 -->
</div>
<div class="hover-turn-after">
{{image|图片=Nav-Blend s.png|显示类型=inline-block|resize=925|width=102.75|height=102.25|x={{#expr:112.75 * 0}}|y=113.5}}
</div>
</div>
该效果比较适合在两张规格相同的图片中进行切换,需要手动设置容器宽高,否则默认为0不显示。
瑕疵:在刚载入页面时会播放一次过渡效果。
固定效果中各个参数都为固定值,但有些效果提供多个级别供使用。
具有可选级别的效果的后缀都有-deep
和-shallow
两种,其中-deep
表示变化效果较强,-shallow
变化效果较弱,具体请通过后面提供的效果展示来参考。
带有蓝色标记的动画可以与不同类的效果互相组合使用。
均为触发hover效果后还原,如果需要触发后显示效果,需要在后面加上-reverse
,例如blur-reverse
就是鼠标移入后变模糊。滤镜类可以和所有其他类共用。
背景类需要定义一组标签来使用。具体用法请参考:#示例5
边框类必须将类添加在其父元素上。具体用法请参考:#示例6
可控效果通过当前节点的css属性font-size
来控制幅度(也会受该值的影响,这取决于当前位置的文字大小,或是从父元素继承而来的文字大小),默认为该数值的0.0625倍,在文字大小为16px时,值为1px。
因为技术限制,暂时只能采取这种控制方法,同时这也带来了一些问题,请务必注意:
line-height
等于font-size
,这会导致位置内部元素的位置受到影响,需要手动设置line-height
为需要的文字大小。更简单的办法是推荐使用弹性布局(flex),这也能更好的帮助抵消过大的font-size带来的其他副作用。这有一篇教程供学习和参考:阮一峰的网络日志:Flex 布局教程。注意:除“圆角化”以外,其他边框类因同时涉及宽度和距离、以及各效果之间的不同,因此以比例形式控制。font-size:160px为默认值,比例为1,例如想让边框宽度变为2倍,则设置font-size:320px,这里同样受webkit内核浏览器字体最小值12px的限制。
这里默认已经使用了{{hovers}}
。
<div class="hovers-wobble-top" style="width:100px; line-height:100px; background:blue; text-align:center; color:white; font-weight:bold">Blue</div>
<span class="hovers-buzz" style="font-size:26px; color:red">Sample</span>
Sample
<div class="hovers-right" style="width:150px; height:150px; background:blue; text-align:center; color:white; font-weight:bold; font-size:{{#expr:16 * 10}}px; display:flex; align-items:center; justify-content:center;"><!--
--><span style="font-size:14px;">font-size:{{#expr:16 * 10}}px</span>
</div>
<div class="hovers-right" style="width:150px; height:150px; line-height:14px; background:#ccc; text-align:center; color:white; font-weight:bold; font-size:{{#expr:16 * 100}}px; display:flex; align-items:center; justify-content:center;" ><!--
--><span style="font-size:14px;">font-size:{{#expr:16 * 100}}px</span>
</div>
<div class="hovers-blur hovers-bob" style="width:100px; line-height:100px; background:blue; text-align:center; color:white; font-weight:bold;">Blue</div>
背景类的html标签结构必须如下,文字内容容器要添加hovers-content类,若同时添加center,则应用内容居中。
<div class="hovers-radial-out" style="background:#eee"><!-- hover效果中的背景颜色由最外层容器的background决定
--><img src="{{filepath:chimame_march2.jpg}}" style="width:150px;" /><!--
--><div class="hovers-content center">{{color|#666|'''[[点兔]]'''}}</div><!-- 也可以对文字内容容器添加背景或其他样式 -->
</div>
<div class="hovers-ripple-out" style="border-color:#666"><!-- 动画中的边框颜色由border-color控制
--><img src="{{filepath:chimame_march2.jpg}}" width="150" /><!--
--></div>