zoukankan      html  css  js  c++  java
  • 记录一个多行文本收起展开demo

    最近的一个需求,当文本过多时显示省略,并显示展开按钮,点击展开,展开后可收起。

    本demo参考:https://juejin.cn/post/6963904955262435336?utm_source=gold_browser_extension

    本帖子只做个人使用记录,没有发布到首页

     掘金小伙伴写的很详细,这里只贴最终代码,具体步骤参考上面文章

    HTML代码

    <div class="wrapper">
      <input id="exp1" class="exp"  type="checkbox">
            <div class="text">
                <label class="btn" for="exp1"></label>
                浮动元素是如何定位的
    正如我们前面提到的那样,当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器的边框,或者碰到另外一个浮动的元素。
    在下面的图片中,有三个红色的正方形。其中有两个向左浮动,一个向右浮动。要注意到第二个向左浮动的正方形被放在第一个向左浮动的正方形的右边。如果还有更多的正方形这样浮动,它们会继续向右堆放,直到填满容器一整行,之后换行至下一行。
            </div>
        </div>
    
    <div class="wrapper">
      <input id="exp2"  class="exp"  type="checkbox">
            <div class="text">
                
                <label class="btn" for="exp2"></label>
                浮动元素是如何定位的
    正如我们前面提到的那样,当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器的边框,或者碰到另外一个浮动的元素。
            </div>
        </div>
    

    CSS代码

    .wrapper {
      display: flex;
      margin: 50px auto;
       800px;
      overflow: hidden;
      border-radius: 8px;
      padding: 15px ;
      box-shadow: 20px 20px 60px #bebebe,
        -20px -20px 60px #ffffff;
    }
    .text {
      font-size: 20px;
      overflow: hidden;
      text-overflow: ellipsis;
      text-align: justify;
      /* display: flex; */
    /*   display: -webkit-box;
      -webkit-line-clamp: 3;
      -webkit-box-orient: vertical; */
      position: relative;
      line-height: 1.5;
      max-height: 4.5em;
    /*   transition: .3s max-height; */
    }
    .text::before {
      content: '';
      height: calc(100% - 26px);
      float: right;
    }
    .text::after {
      content: '';
       999vw;
      height: 999vw;
      position: absolute;
      box-shadow: inset calc(100px - 999vw) calc(30px - 999vw) 0 0 #fff;
        margin-left: -100px;
    }
    .btn{
      position: relative;
      float: right;
      clear: both;
      margin-left: 20px;
      font-size: 16px;
      padding: 0 8px;
      background: #3F51B5;
      line-height: 24px;
      border-radius: 4px;
      color:  #fff;
      cursor: pointer;
      /* margin-top: -30px; */
    }
    .btn::after{
      content:'展开'
    }
    .exp{
      display: none;
    }
    .exp:checked+.text{
      max-height: 200px;
    }
    .exp:checked+.text::after{
      visibility: hidden;
    }
    .exp:checked+.text .btn::before{
      visibility: hidden;
    }
    .exp:checked+.text .btn::after{
      content:'收起'
    }
    .btn::before{
      content: '...';
      position: absolute;
      left: -5px;
      color: #333;
      transform: translateX(-100%)
    }

    在线demo: https://codepen.io/xboxyan/pen/LYWpWzK?fileGuid=XtpJhGpvWxj6qcTr

  • 相关阅读:
    Zjnu Stadium(hdu3047带权并查集)
    cocos2d-x结合cocosbuilder,不同屏幕适配小结
    分布式爬虫系统设计、实现与实战:爬取京东、苏宁易购全网手机商品数据+MySQL、HBase存储
    Generating RSA keys in PKCS#1 format in Java--转
    nodejs安装node-rsa遇到的问题及解决
    spring-redis-data的一个坑
    node-rsa加密,java解密调试
    MySQL 四种事务隔离级别详解及对比--转
    从实际案例聊聊Java应用的GC优化--转
    动态可缓存的内容管理系统(CMS)
  • 原文地址:https://www.cnblogs.com/shenjp/p/14794899.html
Copyright © 2011-2022 走看看