zoukankan      html  css  js  c++  java
  • 文本框高度自适应

    1.contenteditable---并不支持表单事件

    onkeyup模拟placeholder,但是只能输入第一个字生效
    <div name="" id="add-msg" contenteditable="true" class="placeholder" ></div>
    css:.msg-content #add-msg.placeholder:after{
    content: '我来说两句';
    color: #999;
    }

    JS: $('#add-msg').keyup(function(){
          $(this).removeClass('placeholder');
        });
     

    2.textarea自适应--ie下光标会闪动

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            h3 {
                text-align: center;
            }
            #textarea{
                display: block;
                margin: 0 auto;
                height: 18px;
                font-size: 16px;
                line-height: 24px;
                width: 400px;
                padding: 4px;
            }
            textarea {
                letter-spacing: normal;
                word-spacing: normal;
                border: 1px solid #ccc;
                overflow-wrap: break-word;
                overflow:hidden;
                resize: none;
                outline: 0;
            }
        </style>
    </head>
    <body>
     <h3>文本框高度自适应</h3>
        <textarea id="textarea"  name="" placeholder="输入框"></textarea>
    <script>
        var text= document.getElementById("textarea");
        autoTextarea(text);
        /**
         * 文本框根据输入内容自适应高度
         * elem                {HTMLElement}        输入框元素
         * extra               {Number}                设置光标与输入框保持的距离(默认0)
         * maxHeight               {Number}                设置最大高度(可选)
         */
     function autoTextarea(elem, extra, maxHeight) {
            extra = extra || 0;
            var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,
                isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'),
                addEvent = function (type, callback) {
                    elem.addEventListener ?
                        elem.addEventListener(type, callback, false) :
                        elem.attachEvent('on' + type, callback);
                },
                getStyle = elem.currentStyle ? function (name) {
                    var val = elem.currentStyle[name];
    
                    if (name === 'height' && val.search(/px/i) !== 1) {
                        var rect = elem.getBoundingClientRect();
                        return rect.bottom - rect.top -
                            parseFloat(getStyle('paddingTop')) -
                            parseFloat(getStyle('paddingBottom')) + 'px';
                    }
    
                    return val;
                } : function (name) {
                    return getComputedStyle(elem, null)[name];
                },
                minHeight = parseFloat(getStyle('height'));
    
            elem.style.resize = 'none';
    
            var change = function () {
                var scrollTop, height,
                    padding = 0,
                    style = elem.style;
    
                if (elem._length === elem.value.length) return;
                elem._length = elem.value.length;
    
                if (!isFirefox && !isOpera) {
                    padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));
                }
                scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
    
                elem.style.height = minHeight + 'px';
                if (elem.scrollHeight > minHeight) {
                    if (maxHeight && elem.scrollHeight > maxHeight) {
                        height = maxHeight - padding;
                        style.overflowY = 'auto';
                    } else {
                        height = elem.scrollHeight - padding;
                        style.overflowY = 'hidden';
                    }
                    style.height = height + extra + 'px';
                    scrollTop += parseInt(style.height) - elem.currHeight;
                    document.body.scrollTop = scrollTop;
                    document.documentElement.scrollTop = scrollTop;
                    elem.currHeight = parseInt(style.height);
                }
            };
    
            addEvent('propertychange', change);
            addEvent('input', change);
            addEvent('focus', change);
            change();
        }
    
    </script>
    </body>
    </html>


    原创笔记
  • 相关阅读:
    5917
    安装wdcp后,反向代理全过程
    今天 想了个问题,阿里旺旺及时消息
    5917全部电影 我反代了一个站
    曾经4000多IP的站,被百度K了
    asp.net 出现Operation is not valid due to the current state of the object.
    自然语言处理 |文本相似度计算与文本匹配问题
    Node.js v16.13.0 连接MySQL数据库8.0.27失败问题
    NLP自然语言处理 | Prolog 语言入门教程:
    NLP自然语言处理 | TFIDF与余弦相似性的应用(二):找出相似文章
  • 原文地址:https://www.cnblogs.com/minty/p/6970182.html
Copyright © 2011-2022 走看看