在今天的教程中,我们将学习如何仅使用CSS3即可创建水平和垂直内容手风琴 。 有很多jQuery插件可以为您完成这项工作,但是如果访问者关闭了Javascript,该怎么办,那么手风琴将无法正常工作。 如果您的手风琴完全使用CSS,那么它将对所有访问者都有效。

我们将创建一个水平垂直内容手风琴。 单击标题文本后,幻灯片将打开,显示完整内容,下面是它们的外观的快速预览(屏幕截图)。

让编码开始!

1.准备HTML和内容

首先,我们将为手风琴创建HTML。

该结构需要一个容器div ,然后为手风琴中的每张幻灯片都有一个section 。 在此示例中,我们将有5张幻灯片。 每张幻灯片都将有一个标题和一段内容。

<div class="accordion horizontal"><section><h2>About Us</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id lobortis massa. Nunc viverra velit leo, sit amet elementum mi. Fusce posuere nunc a mi tempus malesuada. Curabitur facilisis rhoncus eros eget placerat. Aliquam semper mauris sit amet justo tempor nec lacinia magna molestie. Etiam placerat congue dolor vitae adipiscing. Aliquam ac erat lorem, ut iaculis justo. Etiam mattis dignissim gravida. Aliquam nec justo ante, non semper mi. Nulla consectetur interdum massa, vel porta enim vulputate sed. Maecenas elit quam, egestas eget placerat non, fringilla vel eros. Nam vehicula elementum nulla sed consequat. Phasellus eu erat enim. Praesent at magna non massa dapibus scelerisque in eu lorem.</p></section><section><h2>Services</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id lobortis massa. Nunc viverra velit leo, sit amet elementum mi. Fusce posuere nunc a mi tempus malesuada. Curabitur facilisis rhoncus eros eget placerat. Aliquam semper mauris sit amet justo tempor nec lacinia magna molestie. Etiam placerat congue dolor vitae adipiscing. Aliquam ac erat lorem, ut iaculis justo. Etiam mattis dignissim gravida. Aliquam nec justo ante, non semper mi. Nulla consectetur interdum massa, vel porta enim vulputate sed. Maecenas elit quam, egestas eget placerat non, fringilla vel eros. Nam vehicula elementum nulla sed consequat. Phasellus eu erat enim. Praesent at magna non massa dapibus scelerisque in eu lorem.</p></section><section><h2>Blog</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id lobortis massa. Nunc viverra velit leo, sit amet elementum mi. Fusce posuere nunc a mi tempus malesuada. Curabitur facilisis rhoncus eros eget placerat. Aliquam semper mauris sit amet justo tempor nec lacinia magna molestie. Etiam placerat congue dolor vitae adipiscing. Aliquam ac erat lorem, ut iaculis justo. Etiam mattis dignissim gravida. Aliquam nec justo ante, non semper mi. Nulla consectetur interdum massa, vel porta enim vulputate sed. Maecenas elit quam, egestas eget placerat non, fringilla vel eros. Nam vehicula elementum nulla sed consequat. Phasellus eu erat enim. Praesent at magna non massa dapibus scelerisque in eu lorem.</p></section><section><h2>Portfolio</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id lobortis massa. Nunc viverra velit leo, sit amet elementum mi. Fusce posuere nunc a mi tempus malesuada. Curabitur facilisis rhoncus eros eget placerat. Aliquam semper mauris sit amet justo tempor nec lacinia magna molestie. Etiam placerat congue dolor vitae adipiscing. Aliquam ac erat lorem, ut iaculis justo. Etiam mattis dignissim gravida. Aliquam nec justo ante, non semper mi. Nulla consectetur interdum massa, vel porta enim vulputate sed. Maecenas elit quam, egestas eget placerat non, fringilla vel eros. Nam vehicula elementum nulla sed consequat. Phasellus eu erat enim. Praesent at magna non massa dapibus scelerisque in eu lorem.</p></section><section><h2>Contact</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id lobortis massa. Nunc viverra velit leo, sit amet elementum mi. Fusce posuere nunc a mi tempus malesuada. Curabitur facilisis rhoncus eros eget placerat. Aliquam semper mauris sit amet justo tempor nec lacinia magna molestie. Etiam placerat congue dolor vitae adipiscing. Aliquam ac erat lorem, ut iaculis justo. Etiam mattis dignissim gravida. Aliquam nec justo ante, non semper mi. Nulla consectetur interdum massa, vel porta enim vulputate sed. Maecenas elit quam, egestas eget placerat non, fringilla vel eros. Nam vehicula elementum nulla sed consequat. Phasellus eu erat enim. Praesent at magna non massa dapibus scelerisque in eu lorem.</p></section>
</div>

现在我们有了幻灯片,可以开始为手风琴定型了。

2. CSS样式

首先,我们需要设置包含手风琴的div的样式。 这将使我们了解如何显示每个幻灯片和每个标题。

/*Define Accordion box*/
.accordion { width:830px;overflow:hidden; margin:10px auto; color:#474747; background:#414141; padding:10px;
}

接下来,我们将为每个幻灯片创建标题。

.accordion section{ float:left;overflow:hidden; color:#333; cursor:pointer; background: #333; margin:3px;
}
.accordion section:hover {background:#444;
}

我们将背景颜色设置为该部分的深灰色,以作为访客将单击以显示幻灯片的标题。 我们在标题和内容上都使用了此部分,这意味着我们可以使用更少HTML,并将幻灯片标题重新用作内容的标题。

.accordion section p { display:none;
}

目前,所有幻灯片都将关闭,因此我们需要确保在打开幻灯片之前,该段落不可见,因此现在将其显示设置为无。

.accordion section:after{position:relative;font-size:24px;color:#000;font-weight:bold;
}
.accordion section:nth-child(1):after{ content:'1'; }
.accordion section:nth-child(2):after{ content:'2'; }
.accordion section:nth-child(3):after{ content:'3'; }
.accordion section:nth-child(4):after{ content:'4'; }
.accordion section:nth-child(5):after{ content:'5'; }

关闭幻灯片后,我们希望在标题底部显示一个数字,以说明我们所在的幻灯片。 为此,我们将使用CSS在节标题之后添加内容,这可以通过使用:after伪类选择器来完成。

现在,我们已经为幻灯片创建了标题,我们可以进行click事件以在手风琴中显示幻灯片。 但是有一个问题,CSS没有click事件,这就是通常使用jQuery创建手风琴的原因,因此我们可以将click事件附加到标题文本。

我们需要模仿CSS中的click事件,可以使用:target伪类选择器来完成。

3.使用

:target允许我们设置片段标识符的样式。 有时,我们使用页面上的定位标记指向页面上的某个位置。 单击链接后,锚标记中的id成为目标,您可以使用:target选择器设置其样式。

要将其添加到手风琴中,我们需要在标题周围添加指向幻灯片id的链接。

<section id="about"><h2><a href="#about">About Us</a></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id lobortis massa. Nunc viverra velit leo, sit amet elementum mi. Fusce posuere nunc a mi tempus malesuada. Curabitur facilisis rhoncus eros eget placerat. Aliquam semper mauris sit amet justo tempor nec lacinia magna molestie. Etiam placerat congue dolor vitae adipiscing. Aliquam ac erat lorem, ut iaculis justo. Etiam mattis dignissim gravida. Aliquam nec justo ante, non semper mi. Nulla consectetur interdum massa, vel porta enim vulputate sed. Maecenas elit quam, egestas eget placerat non, fringilla vel eros. Nam vehicula elementum nulla sed consequat. Phasellus eu erat enim. Praesent at magna non massa dapibus scelerisque in eu lorem.</p>
</section>
.accordion section:target { background:#FFF; padding:10px;
}
.accordion section:target:hover { background:#FFF;
}
.accordion section:target h2 {width:100%;
}
.accordion section:target h2 a{ color:#333; padding:0;
}
.accordion section:target p {display:block;
}
.accordion section h2 a{padding:8px 10px;display:block; font-size:16px; font-weight:normal;color:#eee; text-decoration:none;
}

上面的代码将更改幻灯片的大小以适合手风琴的其余部分,并将背景色更改为白色。 该段落已隐藏,因此现在我们需要显示该段落。

现在,当您单击手风琴的标题时,幻灯片将更改样式以显示幻灯片的内容。

4.水平手风琴

上面的代码将创建一般的手风琴,现在我们可以针对水平和垂直手风琴之间的差异开始更改CSS。 这两个手风琴具有相同的功能,但标题样式不同。

.horizontal section{ width:5%; height:250px; -moz-transition: width 0.2s ease-out; -webkit-transition:width 0.2s ease-out;-o-transition:width 0.2s ease-out;transition:width 0.2s ease-out;
}

首先,我们将标题部分的width设置为5%,以便它是闭合的幻灯片。 由于该部分既是幻灯片的标题又是内容,因此我们需要添加动画以通过使用transition属性显示内容。

/*Position the number of the slide*/
.horizontal section:after{top:140px;left:15px;
}

幻灯片上数字的位置在每个闭合标题上的位置都将相同,这些位置与垂直标题的位置不同。

/*Header of closed slide*/
.horizontal section h2 { -webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform: rotate(90deg);transform: rotate(90deg);width:240px; position:relative; left:-100px; top:85px;
}
/*On mouse over open slide*/
.horizontal :target{ width:73%;height:230px;
}
.horizontal :target h2{ top:0px;left:0;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform: rotate(0deg);transform: rotate(0deg);
}

上面的代码将更改幻灯片的大小以适合手风琴的其余部分。 标题已垂直旋转以沿标题向下移动,但是现在打开幻灯片时,我们需要通过将文本旋转回0度来将文本更改回水平。

5.垂直手风琴

垂直手风琴的工作方式与水平手风琴的工作方式相同,只是我们需要更改height而不是width并且我们不需要更改文本的对齐方式。

.vertical section{ width:100%; height:40px; -webkit-transition:height 0.2s ease-out;-moz-transition:height 0.2s ease-out;-o-transition:height 0.2s ease-out;transition:height 0.2s ease-out;
}/*Set height of the slide*/
.vertical :target{ height:250px; width:97%;
}

在垂直手风琴的target事件中,我们将更改标题的height以显示幻灯片。

.vertical section h2 { position:relative; left:0; top:-15px;
}
/*Set position of the number on the slide*/
.vertical section:after{ top:-60px;left:810px;
}
.vertical section:target:after{ left:-9999px;
}

上面的内容将更改标题文本在关闭的幻灯片上的position 。 在关闭的幻灯片中,我们需要设置位于手风琴右侧的数字的position 。 当幻灯片打开时,我们需要在设置目标后在标题上隐藏此数字,以便我们将左侧位置更改为屏幕之外。

现在,当您单击手风琴的标题时,幻灯片将更改样式以显示幻灯片的内容。

编者注:这篇文章是由Paul Underwood为Hongkiat.com撰写的。 Paul是来自英国布里斯托(Bristol)PHP Web开发人员。 他撰写了有关Web开发的教程:主要主题包括PHP,jQuery,CSS3和HTML5。 他还在Paulund.co.uk上记录了有用的代码段。

翻译自: https://www.hongkiat.com/blog/create-css-based-content/

css 手风琴_如何创建基于CSS的内容手风琴相关推荐

  1. css 闪光_闪光VS。 CSS / HTML:您会选择哪个?

    css 闪光 Macromedia Flash. It's one of the most controversial products in the Web development world. M ...

  2. css网格_我如何记住CSS网格属性

    css网格 The syntax for CSS Grid is foreign and hard to remember. But if you can't remember CSS Grid's ...

  3. 解释如何优化css选择器_购物车解释了CSS选择器

    解释如何优化css选择器 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 购物车解释了CSS选择器 (CSS Selectors Explained By Go ...

  4. 基于web的视频_如何创建基于Web的视频播放器

    在上一篇文章中,我们介绍了有关如何创建Audio Web Player以及如何自定义其播放器外观的教程. 这次我们将用视频来做. 是的,我们将创建一个Web Video Player. 视频播放器将使 ...

  5. css 毛玻璃_前端开发,CSS的常用套路附demo的效果实现与源码)

    前言 本文是笔者写CSS时常用的套路.不论效果再怎么华丽,万变不离其宗. 1.交错动画 有时候,我们需要给多个元素添加同一个动画,播放后,不难发现它们会一起运动,一起结束,这样就会显得很平淡无奇.那么 ...

  6. gulp压缩css文件夹,使用 gulp 压缩 CSS

    压缩 css 代码可降低 css 文件大小,提高页面打开速度. 我们接着将规律转换为 gulp 代码 ## [](https://github.com/nimojs/gulp-book/blob/ma ...

  7. 纯css实现手风琴效果_创建纯CSS手风琴的4种方法

    内容手风琴是一种有用的设计模式. 您可以将它们用于许多不同的事物:用于菜单,列表,图像,文章摘录,文本片段甚至视频 那里的大多数手风琴都依赖JavaScript,主要是jQuery ,但是由于高级CS ...

  8. 用js监控分辨率调整背景图片宽度_如何使用CSS Paint API动态创建与分辨率无关的可变背景

    现代Web应用对图像的需求量很大,它们占据网络下载的大部分字节.通过优化它们,你可以更好地利用它们的性能.如果你碰巧使用几何图形作为背景图像,有一个替代方案:你可以使用CSS Paint API以编程 ...

  9. 引用自己创建的css样式表_如何使用CSS创建联系表

    引用自己创建的css样式表 First we create the HTML elements - input fields for First Name, Last Name, Email and ...

最新文章

  1. 基于RESTful API 怎么设计用户权限控制?
  2. 微信公众号基本信息配置
  3. MyBatis源码解析【4】反射和动态代理
  4. 路径规划算法_自动驾驶汽车路径规划算法浅析
  5. ORA-01033: ORACLE initialization or shutdown in progress
  6. 基于MATLAB的Dijkstra算法实现及案例分析
  7. 完全二分图生成树计数
  8. systemd 开机无法启动privoxy
  9. 黑莓发布企业服务SWS 兼容Android和iOS设备
  10. LINUX用C检查文件的大小的代码
  11. redis 客户端操作命令
  12. 常用编程语言介绍及各语言特点
  13. iOS开发bug消灭之:Your application has presented a UIAlertController of style ...
  14. 将连续生产参数与四班三运转班次对应起来的算法
  15. “COMSOL Multiphysics多物理场仿真技术与应用” 电化学专题
  16. Excel 2019:二级级联下拉框设置
  17. 高速PCB设计入门概念
  18. iTab新标签页,一款个性化的浏览器起始页插件
  19. 导航电子地图数据存储标准NDS中文版和英文版
  20. AppCompat V21:将 Materia Design 兼容到5.0之前的设备

热门文章

  1. [置顶]Ceph源码解析:PG peering
  2. 蓝桥杯(Java) 回文日期
  3. 程序员讲装修——平台选择
  4. 关于举办2021年湖北省学生信息素养提升实践活动的通知
  5. renderdoc捕获的mesh,通过插件一键导出成fbx
  6. oracle adf源代码在哪里,第 3 章 | 从设计到实践全面了解 Oracle ADF 应用程序
  7. 备战数学建模35-时间序列预测模型
  8. 阿里云服务器更改时区
  9. 【论文翻译|2021】A survey on heterogeneous network representation learning 异构网络表示学习综述
  10. 【Gitee + Hexo】从0开始搭建自己的博客网站