CSS展开收起
有一个问题是,在上述例子中,把段落内容的“浮动元素”去掉后,段落最后从“行”字开始换行了,“收起”却不换行,也就是会存在有两个字内容看不见情况。
<style>
.wrapper {
/*
使得 .text::before 有高度。
flex 布局的子项,可以通过百分比计算变化高度。
*/
display: flex;
overflow: hidden;
padding: 15px;
margin: 50px auto;
width: 800px;
border-right: 8px;
box-shadow: 20px 20px 60px #bebebe;
} .text {
position: relative;
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
font-size: 20px;
text-align: justify;
text-overflow: ellipsis;
transition: .3s max-height;
}
/*
加了这个使得 .btn 可以占据第三行位置
从而使得省略号的位置不一定要在最右侧出现。
这是个很棒的操作。
在 .text 父元素中,内容都是行内元素,
text::before 元素float动到右边,高度为 .text 高度减去按钮高度。
*/
.text::before {
float: right;
content: '';
height: calc(100% - 24px);
} /*
起到障眼法作用
这个伪元素会紧接着在行内元素的后面
当段落内容不足以出现省略号的时候,伪元素会把“展开”按钮遮住。
*/
.text::after {
position: absolute;
content: '';
width: 999vw;
height: 999vw;
margin-left: -100px;
background-color: #000;
box-shadow: inset calc(100px - 999vw) calc(30px - 999vw) 0 0 #fff;
} /*
浮动元素占据顶部位置,文字环绕浮动元素
clear:right,是为了清除伪元素 .text::before 的影响。
因为伪元素也右浮动,所以 .btn 会水平宽度允许情况下,存在于伪元素左边,
可以视为如果没有伪元素,.btn 会在父元素最右边,所以这里使用 clear
使得 .btn换行。
*/
.btn {
float: right;
clear:right;
margin-left: 10px;
font-size: 16px;
padding: 0 8px;
color: #fff;
cursor: pointer;
background: #3F51B5;
line-height: 24px;
border-radius: 4px;
} /*
起到动态修改内容作用
撑起.btn高度
凡是用到动态修改内容的用 content
*/
.btn::before {content: '展开';} .exp { display: none; }
.exp:checked + .text {
max-height: 200000px; /*超出最大行高度就可以了*/
-webkit-line-clamp: 10000;
}
.exp:checked+.text::after{
visibility: hidden;
}
.exp:checked + .text .btn::before {
content: '收起';
} /* 有一个问题是,在上述例子中,把段落内容的“浮动元素”去掉后,段落最后从“行”字开始换行了,“收起”却不换行,也就是会存在有两个字内容看不见情况。*/
/*https://zhuanlan.zhihu.com/p/373359523*/
</style>
<div class="wrapper">
<input id="exp1" class="exp" type="checkbox" />
<div class="text">
<label class="btn" for="exp1"></label>
元素是如何定位的 正如我们前面提到的那样,当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器的边框,或者碰到另外一个浮动的元素。 在下面的图片中,有三个红色的正方形。其中有两个向左浮动,一个向右浮动。要注意到第二个向左浮动的正方形被放在第一个向左浮动的正方形的右边。如果还有更多的正方形这样浮动,它们会继续向右堆放,直到填满容器一整行,之后换行至下一行
</div>
</div>
内容记录源自:https://zhuanlan.zhihu.com/p/373359523 ,感谢分享。
CSS展开收起的更多相关文章
- [TimLinux] CSS 纯CSS实现动画展开/收起功能
内容转自CSS世界,理解之后进行了简化,简化后代码: <!DOCTYPE html> <html> <head> <meta charset=utf-8 /& ...
- css实现侧边展开收起
前言:因为突然想研究研究侧边栏滑动展开收起怎么做的,就去baidu了一下transition. 详情 内容1 内容1 内容1 内容1 内容1 右侧有实现demo.就是那个绿色的详情 先来看一下我的代码 ...
- 跨平台移动开发 Xuijs超轻量级的框架 Dom与Event简洁代码实现文本展开收起
Dom与Event简洁代码实现文本展开收起 Xuijs超轻量级的框架 Dom与Event实现文本展开收起 效果图 示例代码 <!DOCTYPE html PUBLIC "-//W3C/ ...
- el-upload上传列表实现 展开 收起
# el-upload上传列表实现 展开 收起 #### 无图言*,所以先上最终效果图(想参考代码的可以直接滑到最后) ### 具体实现思路 注意: 每个人的项目环境以及需求,都不尽相同,所以这里仅仅 ...
- HTML-003-模拟IDE代码展开收起功能简单示例
当先我们在日常的编程开发工作中使用编程工具(例如 Eclipse.Sublime 等等)都有相应的代码折叠展开功能,如下图所示,极大的方便了我们的编码工作.
- Vue 实现点击展开收起
Vue 展开收起功能实现 之前写项目的时候提到了一个需求 展开/收起 所有内容的需求 .因之前一值是重构,自己写功能还是比较少的,于是网上搜了一下,发现很多东西其实是jq的功能 虽然可以拿过来用,但是 ...
- javasript简单实现文字的展开收起(无动画)
今天在工作遇到展开和收起的需求,在网上找了很多方法,今天来写一下我觉得比较简单的方法 在项目中需要达到如图这种效果 首先想的是使用overflow简单且粗暴,在需要展开的的文字定义样式 { overf ...
- vue.js 实现点击展开收起动画
最近公司项目加了个页面,其中要求是这样的,点击对应列表,展开和收起, 其实就是显示和隐藏内容部分:说来惭愧,我花了半天时间才搞出来(自黑一下~), ,,接下来分享给大家,先上效果图: .vue页面: ...
- 不使用字体图标和图片,只使用css如何做出展开收起的效果
<i class="iconArrow" :class="[ littleNavState === item.meta.id ? 'arrowOpen' : '' ...
随机推荐
- 面试问题之C++语言:面向对象的三大特性
转载于:https://www.cnblogs.com/BEN-LK/p/10720249.html 面向对象的三大特性:封装.继承.多态 封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据和 ...
- java-集合-realdo-集合一对多
school类: package setdone; import java.util.List; public class School { private String schoolname; pr ...
- 小程序入门系列之 tabBar
本系列为简单入门系列,以一定概括性思路来叙述内容,具体可以查看官网 大部分的电商应用都是底部或顶部多 tab 的模式. 下面我们从配置角度来分析一下: 第一个:position 配置如下: 默认是 b ...
- React+dva+webpack+antd-mobile 实战分享(一)
再看本篇文章之前,本人还是建议想入坑react的童鞋可以选有create-react-app来创建react的项目,因为现在dva和roadhog还不成熟,坑相对要多一些,当然如果你已经做好跳坑的准备 ...
- python爬虫---爬取王者荣耀全部皮肤图片
代码: import requests json_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win ...
- idea 启动微服务 设置 run dashboard
微服务如果很多,启动时如果在run窗口,会不是很方便,所以idea中配置了rundashboard,有时不自动出现时,需要进行配置: 配置操作如下: 我的idea版本2020.2 1.在父工程的.id ...
- idea怎么创建python项目
前言 python是一种功能强大和适用面很广的开发语言,在大数据应用和机器学习日益流行的年代,python凭借其简洁.易用和可扩展性获得很多用户的支持,近年来使用率高速增长.python环境下,集成了 ...
- Django项目引入NPM和gulp管理前端资源
前言 之前写了一篇<Asp-Net-Core开发笔记:使用NPM和gulp管理前端静态文件>,现在又来用Django开发项目了,之前我搞了一个Django的快速开发脚手架「DjangoSt ...
- 解决pycharm的爬虫乱码问题(初步了解各种编码格式)
Ascii码(American Standard Code for Information Interchange,美国信息互换标准代码):最初计算机只在美国使用时,只用8位的字节来组合出256(2的 ...
- AcWing周赛44
周赛44 4317. 不同正整数的个数 link:https://www.acwing.com/problem/content/4320/ 我直接set #include <iostream&g ...