Two lines, expand button in the lower right, spilling add ...

Title two lines, expand button in the bottom right corner, spilling add ...

effect:

 

Ideas:

 

 Code:

<!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>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        ._title_point_card {
            width: 100%;
            overflow: hidden;
        }

        ._title_point_card ._out {
            overflow: hidden;
            height: 48px;
            line-height: 24px;
            width: 200%;
        }

        ._title_point_card a {
            color: blue;
        }

        ._title_point_card .right-1 {
            height: 24px;
            /* background-color: hotpink; */
            width: 50%;
            float: right;
        }

        ._title_point_card .right-2 {
            height: calc(100% - 24px);
            width: calc(50% + 70px);
            /* background-color: skyblue; */
            float: right;
        }
    </style>
</head>

<body>
    <!-- <div class="box">
        <p class="text">全球最大的中文搜索引擎致力于让网民更便捷地获取信息,找到所求。百度超过千亿的中文网页数据库,可以瞬间找到相关的搜索结果。</p>
        <a href="#" class="btn">展开 ^ </a>
    </div> -->
    <div class="_title_point_card">
        <div class="_out">
            <div class="right-1"></div>
            <div class="right-2">
                <span class="_point">... <a href="#" class="_zk_item">展开 ^ </a></span>
            </div>
            <p class="_title">
                <span>测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺测试乙二胺</span>
                <a href="#" class="_sq_item">收起</a>
            </p>
        </div>
    </div>
    <script>
        function TitlePointCard(select, height) {
            this.height = height || 24
            this.dom = Array.from(document.querySelectorAll(select))
            this._state_flag = false
            this.init()
            this.initEvent()
        }
        TitlePointCard.prototype = {
            init: function () {
                var _this = this
                var len = this.dom.length
                var pHeight = 0
                if (len > 0) {
                    for (var i = 0; i < len; i++) {
                        pHeight = this.dom[i].querySelector('._title').offsetHeight
                        if (pHeight < 72) { // 一行、两行
                            this.dom[i].querySelector('.right-1').style.display = 'none'
                            this.dom[i].querySelector('.right-2').style.display = 'none'
                            this.dom[i].querySelector('._out').style.width = '100%'
                            this.dom[i].querySelector('._sq_item').style.display = 'none'
                        } else { // 三行及以上

                             // 判断是否是展开的状态
                            this.dom[i].querySelector('.right-1').style.display = 'block'
                            this.dom[i].querySelector('.right-2').style.display = 'block'
                            this.dom[i].querySelector('._out').style.width = '200%'
                            
                            this.dom[i].querySelector('._sq_item').style.display = 'inline'
                        }
                    }

                }
            },
            initEvent: function () {
                var _this = this
                addEventListener('resize', function () {
                    _this.init()
                })
                this.dom.forEach(function (item) {

                    item.querySelector('._zk_item').addEventListener('click', function () {

                        item.querySelector('.right-1').style.display = 'none'
                        item.querySelector('.right-2').style.display = 'none'
                        item.querySelector('._out').style.width = '100%'
                        item.querySelector('._out').style.height = '100%'
                        item.querySelector('._sq_item').style.display = 'inline'
                    })

                    item.querySelector('._sq_item').addEventListener('click', function () {
                        item.querySelector('.right-1').style.display = 'block'
                        item.querySelector('.right-2').style.display = 'block'
                        item.querySelector('._out').style.width = '200%'
                        item.querySelector('._out').style.height = _this.height * 2 + 'px'
                        item.querySelector('._sq_item').style.display = 'none'

                    })
                })

            }
        }

        var pCard = new TitlePointCard('._title_point_card')
    </script>
</body>

</html>

Guess you like

Origin www.cnblogs.com/superjsman/p/12188758.html