CSDN网站阅读更多:实现原理

一 设计案例

现在很多网站都增加了阅读更多功能。以CSDN为例,分析其实现原理。

二 设计原理

1 内容区的初始高度是固定的。

2 背景渐变的操作区,遮盖在内容区上面

3 点击按钮时,解除内容区的高度限制,同时移除操作区

三 模拟实现

 1 <!DOCTYPE html>
 2 <html lang="en">
 3   <head>
 4     <meta charset="UTF-8" />
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge" />
 7     <title>Document</title>
 8     <style type="text/css">
 9       .box {
10         position: relative;
11         width: 600px;
12       }
13       .box.partial {
14         height: 96px;
15         overflow: hidden;
16       }
17       .opts {
18         position: relative;
19         z-index: 10;
20         margin-top: -72px;
21         padding-top:72px;
22         background-image: -webkit-gradient(
23           linear,
24           left top,
25           left bottom,
26           from(rgba(255, 255, 255, 0)),
27           color-stop(70%, #fff)
28         );
29         background-image: linear-gradient(
30           -180deg,
31           rgba(255, 255, 255, 0) 0%,
32           #fff 70%
33         );
34       }
35     </style>
36   </head>
37   <body>
38     <!-- 内容区 -->
39     <div id="box" class="box partial">
40       iPhone在中国季度销量增长超过华为
41       最新的报告中指出,相比去年12月份,iPhone在国内的销量已经出现了明显逆转,而苹果还是中国3大智能手机厂商中(华为、小米和OPPO),唯一一家在3月份实现月度用户基数增长的公司,这与2018年3月份的情况截然不同。
42       截至今年3月底iPhone在中国的用户基数为20.9%,正在缩小与华为的领先优势,而苹果增长的趋势将一直持续到今年上半年(3月份iPhone在中国的出货量14个百分点,仅同比下滑6%,要知道今年2月份,iPhone在中国的出货量暴降了20%,是6年来最低水平。)。
43       为何销量突然提升?并非偶然
44       对于苹果来说,iPhone销量在中国市场突然提升并非偶然,因为从根本上来说,他们用降价刺激了消费者。3月份,苹果完成了对iPhone
45       XS和iPhone XS
46       Max的降价,当然这个操作依然是通过第三方渠道来完成,这样可以把对品牌的伤害降低到最小。
47     </div>
48 
49     <!-- 操作区 -->
50     <div id="opts" class="opts">
51       <button id="btn" class="btn">更多</button>
52     </div>
53 
54     <!-- 脚本 -->
55     <script>
56       document.getElementById("btn").addEventListener(
57         "click",
58         e => {
59           // 展开内容区
60           let box = document.getElementById("box");
61           box.classList.remove("partial");
62 
63           // 移除操作区
64           let opts = document.getElementById("opts");
65           document.body.removeChild(opts);
66         },
67         false
68       );
69     </script>
70   </body>
71 </html>

原文地址:https://www.cnblogs.com/sea-breeze/p/10700081.html