css实现“展开阅读全文”功能
- 发表于:2019-11-26 21:50
- 阅读(2682)
废话不多说,直接上代码,代码有注释说明,这个功能相对来说还是挺简单的 ~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>展开阅读全文</title>
<style>
/* 容器 */
.content {
overflow: hidden;
position: relative; /* 用于子元素定位 */
}
/* 展开阅读全文 */
div.wanne_read_more {
display: none;
left: 0;
right: 0;
bottom: 0;
height: 100px;
position: absolute; /* 相对父元素定位 */
text-align: center;
background-image: linear-gradient(-180deg,rgba(255,255,255,0) 0%,#fff 70%);
}
/* 展开阅读全文按钮 */
div.wanne_read_more a {
display: inline-block;
color: #333;
margin-top: 75px;
text-decoration: none;
}
/* 向下箭头 */
div.wanne_read_more a .down_arrow {
display: inline-block;
width: 8px;
height: 8px;
border-right: 2px solid #ca0c16;
border-bottom: 2px solid #ca0c16;
transform: rotate(45deg); /* 顺时针旋转45° */
margin-bottom: 3px;
margin-left: 10px;
}
</style>
</head>
<body>
<div class="content">
<h3 id="h3-1-"><a name="1. 程序中的面向对象" class="reference-link"></a><span class="header-link octicon octicon-link"></span>1. 程序中的面向对象</h3>
<p>在目前的软件开发领域中有两种主流的开发方法:结构化开发方法和面向对象开发方法。早起啊的编程语言如:C、Basic、Pascal等都是结构化编程语言;随着软件开发技术的逐渐发展,人们发现面向对象的方式可以提供更好的可重用性、可扩展性和可维护性,于是催生了大量的面向对象的编程语言,如C++、Java、C#和Ruby(一个非常厉害的大佬写的)等。</p>
<p>结构化程序设计方法主张按功能来分析系统需求,其主要原则可概括为自顶向下、逐步求精、模块化等(是不是和平时工作当中的设计模式很像呢?)。结构化程序设计首先采用结构化分析(Structured Analysis, SA)方法对系统进行需求分析,然后使用结构化设计(Structured Design, SD)方法对系统进行概要设计、详细设计,最后采用结构化编程(Structured Program, SP)方法来实现系统。使用这种方式可以较好地保证软件系统的开发进度和质量。</p>
<p>结构化程序设计里的最小的程序单元是函数(不是方法哦),每个函数都负责完成一个功能,用于接收一些输入数据,函数对这些输入数据进行处理,处理完后输出另一些数据。整个软件系统就是由这一个个函数所组成,其中作为程序入口的函数被称为主函数,主函数依次调用其他普通函数,普通函数之间依次调用,从而完成整个软件系统的功能。如下图:</p>
<p>可以看出结构化程序设计采用的是自顶向下的设计方式,在设计阶段就需要考虑好各个模块应该分解成哪些子模块,每个子模块又如何分解成哪些更小的模块等等,直到将模块都细分成一个一个函数。</p>
<p>每个函数都是具有输入、输出的子系统,函数的输入数据包括函数形参、全局变量和常量等,函数的输出数据包括函数返回值以及传出参数等。结构化程序设计方式主要有如下两个局限性:</p>
<pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums"><li class="L0"><code><span class="pun">设计不够直观,与人类的思维习惯不一致。采用结构化程序分析、设计时,开发者需要将客观世界模型分解成一个一个的功能,每个功能用来完成一定的数据处理。</span></code></li><li class="L1"><code><span class="pun">适应性较差,可扩展性不强。由于结构化设计采用自定向下的设计方式,所以当用户的需求发生改变,或需要修改现有的实现方式时,都需要自顶向下地修改模块结构,这种方式的维护成本相当高。(是不是和工作中碰到的似曾相识呢?)</span></code></li></ol></pre>
<p>任何简单或复杂的算法都可以由三种基本结构组合而成,分别是:顺序结构、选择结构和循环结构。这三种结构被称为程序设计的三种基本结构,也是结构化程序设计必须采用的结构。</p>
<div class="wanne_read_more">
<a href="javascript:void(0);" onclick="readMore()">展开阅读全文<span class="down_arrow"></span></a>
</div>
</div>
</body>
<!-- 注意:这里需要依赖jquery,如果不想用jq,下面的代码可以换成javascript的也可以 -->
<script src="js/jquery.min.js"></script>
<script>
$(function(){
// 这里我是判断如果内容高度超过200px才隐藏剩余部分,具体要限制多高你可以自定义
if ($('.content').height() > 200) {
console.log("实际高度:" + $('.content').height() + "px");
// 只显示200px预览高度
$(".content").css("height", "200px");
$(".wanne_read_more").show();
}
});
function readMore() {
// 显示所有内容
$(".content").css("height", "auto");
$(".wanne_read_more").hide();
}
</script>
</html>
总体来说,代码不多,实现这一功能还是挺简单的,如果不对的地方欢迎指出~O(∩_∩)O哈哈~
最后鼓励我一下吧,请我喝杯奶茶~
上一篇:Java基础知识之多态
下一篇:谷歌浏览器的默认弹出框简单介绍
相关推荐
-
mac安装subversion,并使用svn命令检出服务器上的代码库项目
mac安装svn只要通过Homebrew安装即可,不需要下载额外的安装包手动安装,Homebrew类似一个软件库,我们可以通过brew命令实现一键下载并安装我们所需要的常用软件。
-
Java如何获取泛型类T的Class
我们平时在封装接口或抽象类的时候经常会用到Java的泛型,经常会在传入一个泛型类T,然后封装一些抽象的方法,泛型的好处就是在编译的时候检查类型安全,并且所有的强制类型转换都是隐式和自动的,这样可以提高代码的通用性。但是我们有时候需要获取泛型类的Class,那可以如何获取到呢?
-
springboot项目事务报错:Transaction synchronization is not active
这几天在使用spring声明式事务的时候突然报了一个错误:Transaction synchronization is not active,之前使用的都是好好的,为什么这次就不行了呢?不就是加一个 @Transactional 而已嘛???
-
mysql应该如何在where语句中添加if语句进行条件判断?where if 语句应该如何使用
我们在平时的项目开发中,有时候会遇到复杂一点的需求,需要我们手动编写复杂的SQL语句,并且有时候需要根据每条表记录的实际情况进行判断,根据每条记录动态添加不同的where条件,这个时候我们就可以在where语句中使用if语句进行条件判断,那么where if应该如何正确使用呢?
-
关于websocket多节点分布式问题的解决方案
websocket是一种在单个TCP连接上进行双全工通信的协议,使用websocket,我们可以实现服务端主动向各个订阅消息通道的客户端推送消息。这点比传统的http轮询请求要更好一点,避免一些无用的请求,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
-
mac如何把文件压缩成tar、zip以及如何解压tar、zip?
有时候我们需要把文件压缩成一个tar文件或zip文件,发送给别人,那么在macos系统应该如何压缩和解压缩呢?
-
openjdk和jdk有什么区别,应该如何选择?
我们一开始学习java的时候,安装的都是从sun官网或oracle官网下载的jdk安装包,但其实还有另外一个来源可以获取到jdk安装包,那就是openjdk,它和jdk基本一样,推荐使用openjdk。
-
如果git仓库发生变更,IDEA如何直接修改git远程仓库地址?
有时候我们整理远程仓库代码的时候,会修改远程仓库的名称,或者所属分组,这个时候在IDEA由于还是使用原先拉取的旧仓库地址,导致本地代码会提交不了,也更新不了远程最新代码,那么这个时候要如何修改IDEA当前的git远程仓库地址呢?如何无缝修改,修改完之后就能和原来一样更新提交,并且以前的提交记录也保留呢?
-
微信公众号自定义菜单报错:no permission to use weapp in menu rid:xxxxxxx
昨晚公司系统添加微信公众号菜单突然报错:{"errcode":45064,"errmsg":"no permission to use weapp in menu rid: 60311f70-0736ff08-29143906"}
-
Java如何使用stream流对List列表数据进行自定义排序
我们一般做排序功能都是通过在mysql数据库中的表中定义好排序字段,然后使用升序或降序来进行排序,复杂一点的话就配合多个排序字段进行排序,但是如果碰到那种无法使用表的字段进行排序的情况,我们需要先从数据库中取出列表数据,然后再通过业务代码对列表进行排序,这个时候我们就可以使用redis或Java的stream流。
-
微信企业付款到零钱报错:此请求可能存在风险,已被微信拦截
具体错误信息:com.github.binarywang.wxpay.exception.WxPayException: 返回代码:[SUCCESS],返回信息:[支付失败],结果代码:[FAIL],错误代码:[NO_AUTH],错误详情:[此请求可能存在风险,已被微信拦截。]
-
springboot项目使用@Transactional注解如何避免长事务问题
在springboot项目中,我们开启事务是非常简单的,使用注解的方式就是在需要开启事务的方法上添加@Transactional,这样就可以实现这个方法里面的所有操作和调用方法的操作都绑定在一个事务上面,要么全部一起执行成功,要么全部一起执行失败,如果其中有某个地方抛了异常,则整个方法涉及的事务操作都会回滚,但是如果随意滥用@Transactional,又有可能引发长事务问题,导致数据库死锁、数据库连接池占满等问题。
-
css实现“展开阅读全文”功能
最近发现很多博客网站,资讯网站喜欢把资讯博文,内容等这些大文本的信息在页面显示的时候都会有个“展开阅读全文”的按钮,点击这个按钮即可展开显示所有的内容,不然一开始就显示那么长的篇幅相对来说既不美观,又对用户体验不好。现在就让我来仿照这类网站实现一个“展开阅读全文”功能。这里主要用到的前端技术是html+jquery+css,只做展开功能,没做收起功能(收起功能没必要吧,谁会去收起呀???)。
-
关于编程中面向对象的理解,什么是面向对象
面向对象设计相对于结构化程序设计可以说是一种更优秀的程序设计方法。它的基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在软件系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物(即对象)为中心来思考,认识问题。
-
我的linux操作命令总结,记录常用linux操作命令
平常本地开发项目使用的系统基本都是window系统,而且都是图形化操作,非常方便,window也是越做越好了,项目部署到生产环境一般都是选择linux系统(当然window server系列也可以),而linux一般则选择centOS居多,这里记录一下linux常用命令,以免老是过几天就忘了,后续不断补充。