CSS--使用伪选择器制作箭头图标

// 使用Transform的属性,组合translate(位移)和rotate(旋转),将生成的小矩形组合成各种箭头样式;

HTML

 1 <section class="main">
 2     <header class="title">图标变形过渡效果缩放式菜单</header>
 3     <section>
 4         <button>图标</button>
 5         <header>
 6             #300x100 淡色系
 7         </header>
 8         <div>
 9             <article>
10                 <img src="http://www.gbtags.com/gb/laitu/300x100" alt="" />
11             </article>
12         </div>
13     </section>
14     <section>
15         <button>图标</button>
16         <header>
17             #300x100 暗色系
18         </header>
19         <div>
20             <article>
21                 <img src="http://www.gbtags.com/gb/laitu/300x100/666666/ffffff" alt="" />
22             </article>
23         </div>
24     </section>
25 </section>

CSS

 1 * { box-sizing:border-box;}
 2 body { font-family: ‘microsoft yahei‘,Arial,sans-serif; background: #aaa;}
 3 section { position: relative; width:100%;}
 4 section.main { position: absolute; top:10%; left:25%;  width:50%; max-width:30em; min-width:15em; border-radius:5px; overflow: hidden;}
 5 section.main > header { background: orange; color:#fff; line-height: 1.2em; text-align: center;}
 6 section section:last-child { border:none;}
 7 section > div { height:0; overflow: hidden; transition:all .4s ease-in-out;}
 8 article,header { padding:1em; line-height: 1em;}
 9 header:not(.title) { width:100%; overflow: hidden; height:3em; background: #efefef; cursor:pointer; color:#888; white-space:nowrap; text-overflow: ellipsis; padding-right: 2.1em;}
10 header:not(.title):hover { background: #e8e8e8;}
11 article { line-height: 1.4em; background: rgba(255, 255, 255, .7);}
12 article img { width:100%; height:auto; border:2px solid white; border-radius: 3px;}
13
14 /* 使用CSS3的伪选择器,生成关闭和向下两个图标按钮; */
15 /* 使用变形属性,组合位移和旋转,可将生成的小矩形组合成向下按钮,同样也可以组装成关闭按钮; */
16 section button { position: absolute; right:0; margin:0; padding:0; height:3em; width:3em; outline:none; border:0; background: none; text-indent: -9999px; pointer-events:none; cursor:pointer;}
17 section button:before,
18 section button:after { content:‘‘; display: block; position: absolute; width:4px; height:12px; background: orange; border-radius: .3em; top:50%; left:50%; transition:all .3s ease-in-out;}
19
20 /*向左箭头*/
21 /*section button:before { transform:translate(0%, -50%) rotate(45deg);}
22 section button:after { transform:translate(0%, 0%) rotate(-45deg);}*/
23
24 /*向右箭头*/
25 /*section button:before { transform:translate(0%, -50%) rotate(-45deg);}
26 section button:after { transform:translate(0%, 0%) rotate(45deg);}*/
27
28 /*向上箭头*/
29 /*section button:before { transform:translate(75%, -20%) rotate(-45deg);}
30 section button:after { transform:translate(-75%, -20%) rotate(45deg);}*/
31
32 /*向下箭头*/
33 section button:before { transform:translate(75%, 0%) rotate(45deg);}
34 section button:after { transform:translate(-75%, 0%) rotate(-45deg);}
35
36
37 /* 点击之后需要变成"X"; */
38 section.open button:after,section.open button:before { background: red; height:14px; }
39 section.open button:before { transform:translate(-75%, -20%) rotate(45deg);}
40 section.open button:after { transform:translate(-75%, -20%) rotate(-45deg);}

JavaScript

 1 $(function(){
 2     $(‘section section header‘).on(‘click‘, function () {
 3         var $this = $(this),
 4             parent_section = $this.parent(),
 5             closeDiv = $this.siblings(‘div‘),
 6             contentheight = closeDiv.children(‘article‘).outerHeight();
 7         (closeDiv.height() === 0 ) ? closeDiv.height(contentheight) : closeDiv.height(0);
 8         // 更改容器高度;
 9         $this.parents(‘section‘).first().toggleClass(‘open‘);
10         // 更改箭头样式;
11     });
12 });
时间: 2024-07-30 04:03:18

CSS--使用伪选择器制作箭头图标的相关文章

用CSS伪元素制作箭头

现在让我们开始制作箭头吧! 在开始前,你要知道如何用CSS去画一个三角形,如果还不清楚可以看看这里纯CSS画各种图形 我们用到两个CSS伪元素,before和after,它们属于行内元素,但可以用display来改变,before和after是在CSS2的新特性(现在已经老了),浏览器对其兼容性还未了解. 实现代码如下: 1 <!--CSS样式,在项目中可以把相同的属性与属性值对写在一起,这里是方便学习--> 2 <style> 3 .divtest{ 4 position: ab

CSS之旅——第三站 强大的伪选择器

说到伪选择器,真的让我体会到了CSS的无比强大,强大到自己貌似都不认识CSS了,有点C# 6.0中一些语法糖带给我们的震撼...首先 我们可以在VS里面提前预览一下. 可以看到,上面的伪类有很多很多,多的让我眼都快瞎了...下面就挑一些实用性比较强的说一说. 一  :nth-child 伪选择器 我们知道在jquery中有一种选择器叫做“子类选择器”,对应的有:nth-child,:first-child,:last-child,:only-child,这回在CSS中同样 可以办到,可以说一定程

css 制作三角形图标 不支持IE6

.triangle { width: 10px; height: 10px; overflow: hidden; border-left: 4px solid rgba(0, 224, 255, 1); border-right: 4px solid rgb(0, 255, 10); border-top: 4px solid #ff0; border-bottom: 4px solid #ca0309; } 效果: 把10px改成0后: 去掉border-top这一句: 把border-lef

CSS中伪类及伪元素用法详解

原文:CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active  大致效果为用鼠标点击时,元素增加特效,鼠标松开时,特效消失.多用在按钮的点击上. 写法: 这里id为box的是一div块,在css中首先设置了他的基本样式,下面为加入:active伪类后需要修改的样式. 未点击时: 点击之后: :active.:hover.:

CSS之精灵图与字体图标

本文内容: 精灵图 字体图标 首发日期:2018-05-01 精灵图: 在以前,每个图片资源都是独立的一张张图片,浏览器访问网站中的不同网页时是重复获取这一张张图片的,这代表需要访问很多次资源. 为了减少资源的访问次数,将多个常用的图片集合到一张图片中(网页的缓存机制是会略去本地已经有的资源,如果前一次获取到了这个资源,那么后面不会再访问了,直到缓存的资源失效了.[意思有点类似去游乐园,有些票能玩所有游戏,而有些票只能玩一个游戏,如果你拿着能玩所有游戏的票,那你就不用麻烦去一次次买票了]). 将

纯css写一个大太阳的天气图标

效果 效果图如下 实现思路 div实现太阳的一条矩形光影 before伪元素制作另一条光影矩形,和已有的转变90° after伪元素画个圆实现太阳样式 dom结构 用两个嵌套的div容器,父容器来控制图标显示的位置,子容器用来写太阳的一条光影矩形的样式. <div class="container"> <div class="sunny"></div> </div> 专门建立的学习Q-q-u-n ⑦⑧④-⑦⑧③-零①②

关于css中伪类及伪元素的总结

css中的伪类和伪元素总是混淆,今天参考了很多资料,也查看了部分文档,现将伪类及伪元素总结如下: 一.由来: 伪类和伪元素的引入都是因为在文档树里有些信息无法被充分描述,比如CSS没有“段落的第一行”.“文章首字母”之类的选择器,而这在一些出版场景里又是必须的,这一情况下出现的.引用标准中的话: CSS introduces the concepts of pseudo-elements and pseudo-classes to permit formatting based on infor

【CSS笔记】css3制作立体导航

此例设计到:css3,伪类等. 源码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CSS3制作立体导航</title> <link rel="stylesheet" href="http://www.w3cplus.com/demo/css3/base.css&q

浅谈CSS的伪类与伪元素

本文向大家展示了CSS的伪类与伪元素,介绍的非常全面,这里推荐给大家参考下. 伪类 伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id.class.属性等静态的标志.由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式:当状态改变时,它又会失去这个样式.由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类. 伪类选择器:CSS中已经定义好的选择器,不能随便取名 :link 伪类将应用于未被访问过的链接,与:v