css 如何添加一个href链接,而不是替换段落中的最后几个字母

cngwdvgl  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(41)

我有个问题想找人帮忙
这是我的HTML:

<div class="post--content">Lorem ipsum dolor sit amet,nconsectetur adipiscing.Lorem 
 vipsumdolor sit amet,nconsectetur adipiscing.Lorem ipsum dolor sit amet,nconsectetur  
 adipiscing.Lorem ipsum dolor sit amet,nconsectetur adipiscing.Lorem ipsum dolor sit  
 amet,nconsectetur adipiscing.</p>

<a href="link" target="_blank">Read more</a>

字符串
我的CSS:

.post--content {
    max-width: 300px;  
    line-height: 11.6px;  
    display: -webkit-box;  
    -webkit-line-clamp: 2;  
    -webkit-box-orient: vertical;  
    overflow: hidden;  
}


我想隐藏我的文字,如果它的大小超过我的宽度两行。然后动态设置我的href链接在这第二行的末尾。这个href链接将把用户带到整篇文章。这样做的目的是独立于文本的大小总是会把我的href链接在这段。
https://codepen.io/DaroGawlik/pen/jOdgrbo?editors=1111

cxfofazt

cxfofazt1#

您可以为文本和链接创建一个容器,然后使用JavaScript动态计算第二行的位置并相应地追加链接。示例:
HTML

<div class="post--container">
    <div class="post--content">Lorem ipsum dolor sit amet, consectetur adipiscing. Lorem ipsum dolor sit amet,
        consectetur adipiscing. Lorem ipsum dolor sit amet, consectetur adipiscing. Lorem ipsum dolor sit amet,
        consectetur adipiscing. Lorem ipsum dolor sit amet, consectetur adipiscing.
    </div>
    <a href="link" target="_blank" class="read-more">Read more</a>
</div>

字符串
CSS

.post--container {
    max-width: 300px;
    position: relative;
}

.post--content {
    line-height: 11.6px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.read-more {
    position: absolute;
    bottom: 0;
    right: 0;
    background-color: #f2f2f2;
    padding: 5px;
    text-decoration: none;
}


JS

document.addEventListener("DOMContentLoaded", function () {
    const container = document.querySelector(".post--container");
    const content = document.querySelector(".post--content");
    const readMore = document.querySelector(".read-more");

    const lineHeight = parseFloat(window.getComputedStyle(content).lineHeight);
    const maxLines = 2;

    const setLinkPosition = () => {
        const height = content.clientHeight;
        const lines = Math.round(height / lineHeight);

        if (lines > maxLines) {
            readMore.style.top = `${maxLines * lineHeight}px`;
        } else {
            readMore.style.top = "100%";
        }
    };

    window.addEventListener("resize", setLinkPosition);
    setLinkPosition();
});

相关问题