点开、收起全文效果

使用JS技术实现QQ阅读类似的点击展开、收起效果。

一、定义展开函数showdiv(),实现点击"全文"按钮,全文展开。

1.点击展开函数,需要将触发点击事件的按钮作为参数传入
2.通过传入的按钮,查找其父元素,将其父元素设置为隐藏。
3.将紧跟其父元素之后的元素设置为显示。

二、定义收起函数hidediv(),实现点击"收起全文"按钮,全文内容隐藏。

1.点击收起函数,需要将触发点击事件的按钮作为参数传入
2.通过传入的按钮,查找其父元素,将其父元素设置为隐藏。
3.将紧跟其父元素之前的元素设置为显示。
注意:为了浏览器兼容,一定要判断找到的节点nodeType是否为元素节点。
效果如图:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        body
        {
            margin: 0 auto;
            padding: 0;
            font-size: 9pt;
            line-height: 180%;
        }
        #pn
        {
            background: #f8f8f8;
            height: auto;
            width: 750px;
            margin: 0 auto;
            padding: 5px;
        }
        .artTitle
        {
            font-weight: bold;
            color: #3030FF;
            font-size: 11pt;
        }
        .subTitle
        {
            color: #CCC;
        }
        .content
        {
            border: 1px solid #CCC;
            display: none;
            padding: 5px;
        }
        .btm
        {
            text-align: right;
            height: 30px;
        }
        .btn
        {
            width: 80px;
            height: 20px;
            padding: 5px 3px 5px 3px;
            text-align: center;
            text-decoration: none;
            background: #f0f0f0;
            border: 1px solid #CCC;
        }
    </style>
    <script type="text/javascript">
        // 显示函数
        function showdiv(obj) {
            var x=obj.parentNode;
            var y=x.nextSibling;
            while(y.nodeType!=1){
                y=y.nextSibling;
            }
            x.style.display="none";
            y.style.display="block";
        }

        // 隐藏函数
        function hidediv(obj) {

            var x=obj.parentNode.parentNode;
            var y=x.previousSibling;
            while(y.nodeType!=1){
                y=y.previousSibling;
            }
            x.style.display="none";
            y.style.display="block";
        }
    </script>
</head>
<body>
<div id="pn">
    <div id="art0">
        <p class="artTitle">
            Slack:团队日常沟通协作工具典范
        </p>
        <p class="subTitle">
            作者:来自网络 发表时间:2014-3-1
        </p>
        <p>
            现在可以在Slack.com上申请成为试用用户,这是一个面对企业、团队的协作工具,似乎需要试用企业域名后缀的邮箱。 Slack从目前看,基本符合我对团队沟通工具的完全要求。特点如下:
            在所有端都可以进行,即桌面端,包括Mac OS和Windows系统;web端即浏览器;移动端的支持包括iOS和Android。 同时,移动端是有良好体验以满足移动办公便利性的。
            聚焦核心行为,即"发布一条信息",团队成员只需要做一个这个基本行为即可。 发布一条... <a href="#" onclick="javascript:showdiv(this);" >展开全文</a></p>
        <div class="content">
            <p>
                现在可以在Slack.com上申请成为试用用户,这是一个面对企业、团队的协作工具,似乎需要试用企业域名后缀的邮箱。 Slack从目前看,基本符合我对团队沟通工具的完全要求。特点如下:</p>
            <p>
                聚焦核心行为,即“发布一条信息”,团队成员只需要做一个这个基本行为即可。</p>
            <p>
                发布一条信息这个行为可以扩展成为该信息是一个图片或者一个文件等,以便协作更好进行,如果文件能快速预览则更好。</p>
            <p>
                支持@方式直接和单个团队成员沟通,并且能够被其他成员看到和参与进来。</p>
            <p>
                以#来进行快速形成话题组或者项目组。</p>
            <p>
                良好的搜索支持。 上述虽然是Slack的特性,也是我对团队日常协作工具的要求——显然,Slack完全符合这些要求,而且产品做得很易用。这些要求其实就是我对“移动、社交、云端存储”的理解,这三个因素基本会重写很多软件和应用。</p>
            <p>
                Slack有免费的lite版本,但收费版本似乎价格对中文用户而言略高。</p>
            <p>
                Slack由我很喜欢的项目Flickr的创始人新公司TinySpeck创办,因此基础甚好。而且从目前看,基本上会成为一个很成功的应用,所以在产品持续发展上面应该毫无问题。</p>
            <p>
                The post Slack:团队日常沟通协作工具典范 appeared first on 游山打猎.</p>
            <div class="btm">
                <a href="#" class="btn" onclick="javascript:hidediv(this);">收起全文</a>
            </div>
        </div>
    </div>
    <hr />
    <div id="art1">
        <p class="artTitle">
            Slack:团队日常沟通协作工具典范
        </p>
        <p class="subTitle">
            作者:来自网络 发表时间:2014-3-1
        </p>
        <p>
            现在可以在Slack.com上申请成为试用用户,这是一个面对企业、团队的协作工具,似乎需要试用企业域名后缀的邮箱。 Slack从目前看,基本符合我对团队沟通工具的完全要求。特点如下:
            在所有端都可以进行,即桌面端,包括Mac OS和Windows系统;web端即浏览器;移动端的支持包括iOS和Android。 同时,移动端是有良好体验以满足移动办公便利性的。
            聚焦核心行为,即"发布一条信息",团队成员只需要做一个这个基本行为即可。 发布一条... <a href="#" onclick="javascript:showdiv(this);">展开全文</a></p>
        <div class="content">
            <p>
                现在可以在Slack.com上申请成为试用用户,这是一个面对企业、团队的协作工具,似乎需要试用企业域名后缀的邮箱。 Slack从目前看,基本符合我对团队沟通工具的完全要求。特点如下:</p>
            <p>
                在所有端都可以进行,即桌面端,包括Mac OS和Windows系统;web端即浏览器;移动端的支持包括iOS和Android。</p>
            <p>
                同时,移动端是有良好体验以满足移动办公便利性的。</p>
            <p>
                聚焦核心行为,即“发布一条信息”,团队成员只需要做一个这个基本行为即可。</p>
            <p>
                发布一条信息这个行为可以扩展成为该信息是一个图片或者一个文件等,以便协作更好进行,如果文件能快速预览则更好。</p>
            <p>
                支持@方式直接和单个团队成员沟通,并且能够被其他成员看到和参与进来。</p>

            <p>
                The post Slack:团队日常沟通协作工具典范 appeared first on 游山打猎.</p>
            <div class="btm">
                <a href="#" class="btn" onclick='hidediv(this)'>收起全文</a>
            </div>
        </div>
    </div>
</div>
</body>
</html>

 

 

转载于:https://www.cnblogs.com/Lovebugs/p/6375925.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现点击扇形展开效果菜单,需要使用CSS中的transform和transition属性。以下是一种实现方式: HTML结构: ```html <div class="menu"> <div class="item item1"></div> <div class="item item2"></div> <div class="item item3"></div> <div class="item item4"></div> <div class="item item5"></div> <div class="center"></div> </div> ``` CSS样式: ```css .menu { position: relative; width: 200px; height: 200px; } .item { position: absolute; width: 50px; height: 50px; background-color: #ccc; border-radius: 50%; transition: transform 0.5s ease; } .item1 { top: -25px; left: 75px; } .item2 { top: 35px; left: 35px; } .item3 { top: 75px; left: -25px; } .item4 { top: 35px; left: -85px; } .item5 { top: -25px; left: -45px; } .center { position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; background-color: #333; border-radius: 50%; transform: translate(-50%, -50%); cursor: pointer; } ``` JavaScript代码: ```javascript var menu = document.querySelector('.menu'); var items = document.querySelectorAll('.item'); var center = document.querySelector('.center'); var isOpen = false; center.addEventListener('click', function() { if (isOpen) { // 关闭菜单 menu.classList.remove('open'); items.forEach(function(item, index) { item.style.transform = 'rotate(0deg)'; }); } else { // 打开菜单 menu.classList.add('open'); items.forEach(function(item, index) { item.style.transform = 'rotate(' + (index * 72) + 'deg)'; }); } isOpen = !isOpen; }); ``` 在上面的代码中,我们通过JavaScript监听中心圆的点击事件,并根据菜单是否打开来决定是展开还是收起菜单。当菜单打开时,我们给菜单容器添加open类名,并将每个菜单项按照一定角度旋转,从而形成扇形展开效果。当菜单关闭时,我们将open类名移除,并将每个菜单项旋转回初始状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值