sina微博输入功能实现

今天在input里面用onchange方法,但是不能实现动态在别的地方显示内容,就找了一下有一个叫oninput方法可以。突然想到微博140字数限制也有这个功能,就想着把微博实现一下。然后只做了一部分,还是挺弱的。。。

第一张是微博的页面:
这里写图片描述

第二张是我自己写的:
这里写图片描述
实现的部分功能:

  • 当输入框里没有内容时,点击发布按钮不提交,并且颜色不变深;当有内容时,右上角提示输入的字数,并将右下角发布按钮变深,删除输入框内容后恢复初始状态。
    这里写图片描述
  • 点击输入框任意位置或者选择任意文字,会自动插入或者替换成 #话题#。
    这里写图片描述

    这里写图片描述

  • 选择哪些人可以看到。
    这里写图片描述
  • 还有都是小细节,鼠标hover字体颜色变化等。
  • 自己将以前看过的flex布局、css选择器、事件监听、委托等知识点应用熟悉了一下,学习了光标位置的一些知识。还有自适应、图片、视频上传、css动画等没有做,看上去很简单的东西其实还是有很多知识的,需要以后多加练习思考。
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <style type="text/css">
        .title{
            width: 600px;
            height: 70px;
            display: flex;
            flex-direction:row;
            justify-content:space-between;
            align-items:center;
        }
        .bottom: {
            width: 600px;
            height: 70px;
            display: flex;
            flex-direction:row;
            justify-content:space-between;
            align-items:center;
        }
        #whoSee{
            height:40px;
            width:90px;
            color:black;
            display:flex;
            align-items:center;
            justify-content:center

        }
        #submit{
            border:0px solid ;
            height:40px;
            width:75px;
            background-color:#ffc09f;
            color:white;
            display:flex;
            align-items:center;
            justify-content:center
        }

        #people{
            display:none;
            position:absolute;
            left:380px;
            top:200px;
            border:1px solid #ccc;
        }
        a{
            text-decoration: none;
            color:black;

        }
        a:hover{
            color:#eb7350;
        }
        #people ul li{
            list-style-type:none;
        }
    </style>
</head>
<body>
<div class="title">
    <p>有什么新鲜事想告诉大家?</p>
    <div>已输入<span id="demo"></span></div>
</div>
<div  style="border:1px solid orange;width:600px;">
    <textarea id="myInput" style="height: 68px; width:600px;" oninput="myFunction()"></textarea>
</div>
<div class="title" id="buttomTitle">
    <div>
        <a href="#" title="表情" ><img src="1.jpg">表情</a>
        <a href="#" title="图片"><img src="2.png">图片</a>
        <a href="#" title="视频"><img src="3.png">视频</a>
        <a href="#" title="话题"><img src="4.png">话题</a>
        <a href="#" title="头条文章"><img src="5.png">头条文章</a>
        <img src="6.png" title="查看更多">
    </div>
    <div style="display:flex;flex-direction:row">
        <a href="#" id="whoSee" title="公开-你发表的微博可以被大家公开查看哦" >公开v</a>
        <a href="#" id="submit" >发布</a>
    </div>
</div>
<div id="people" >
    <ul>
        <li>
            <a href="#" id="li1" title="公开-你发表的微博可以被大家公开查看哦">公开</a>
        </li>
        <li>
            <a href="#" id="li2" title="好友圈-你发表的微博只有好友可以看见">好友圈</a>
        </li>
        <li>
            <a href="#" id="li3" title="仅自己可见-你发表的微博只有自己可以看见">仅自己可见</a>
        </li>
        <li>
            <a href="#" id="li4" title="群可见-你发表的微博所有群成员可以看见">群可见</a>
        </li>
    </ul>
</div>
<script type="text/javascript">
    var myFunction=()=>{
         var x = document.getElementById("myInput").value;
        document.getElementById("demo").innerHTML =x.length;
    }

    document.getElementById("myInput").addEventListener("input",()=>{
        if(!!document.getElementById("myInput").value.length){
            document.getElementById("submit").style.backgroundColor="#f7671d";
        }
        else{
            document.getElementById("submit").style.backgroundColor="#ffc09f";
        }
    });
    document.getElementById("submit").addEventListener("click",()=>{
        if(!!document.getElementById("myInput").value.length){
            alert("成功发布!发布的内容为:"+document.getElementById("myInput").value);
        }

    });
    document.getElementById("whoSee").addEventListener("click",()=>{
        if((!document.getElementById("people").style.display)||document.getElementById("people").style.display=="none"){
            document.getElementById("people").style.display="block";

        }
        else{
            document.getElementById("people").style.display="none";
        }


    });
    document.getElementById("whoSee").addEventListener("mouseover",()=>{

        document.getElementById("whoSee").style.color="#f7671d";

    });
    document.getElementById("whoSee").addEventListener("mouseout",()=>{

        document.getElementById("whoSee").style.color="black";

    });

    //添加话题
    document.body.addEventListener("click",function(e){
        if(e.target.id!="whoSee"){
            document.getElementById("people").style.display="none";
        }
        if(e.target.childNodes.length==2 && e.target.childNodes[1].data=="话题"){
            var topicAdd = "#在这里输入你想要说的话题#";
            var tempObj = document.getElementById("myInput");
            if(tempObj.value.indexOf("#在这里输入你想要说的话题#")== -1){
                var start = tempObj.selectionStart;
                var end = tempObj.selectionEnd;
                tempObj.value = tempObj.value.substring(0,start)+topicAdd+tempObj.value.substr(end);
                tempObj.focus();
                document.getElementById("demo").innerHTML = document.getElementById("myInput").value.length;
                document.getElementById("submit").style.backgroundColor="#f7671d";
            }
        }
    });

    //可见的人
    document.getElementById("people").addEventListener("click",function(e){
        if(e.target.text=="公开"){
            document.getElementById("whoSee").innerHTML="公开v";
            document.getElementById("submit").innerHTML="发布";
        }
        if(e.target.text=="好友圈"){
            document.getElementById("whoSee").innerHTML="好友圈v";
            document.getElementById("submit").innerHTML="好友发布";
        }
        if(e.target.text=="仅自己可见"){
            document.getElementById("whoSee").innerHTML="仅自己可见v";
            document.getElementById("submit").innerHTML="发布";
        }
        if(e.target.text=="群可见"){
            document.getElementById("whoSee").innerHTML="群可见v";
            document.getElementById("submit").innerHTML="发布";
        }
    });
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值