zoukankan      html  css  js  c++  java
  • 文本域自适应(textarea)

    文本域自适应

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>文本域自适应高度(模拟有道词典。。)</title>
        <link rel="stylesheet" href="../static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
        <link rel="stylesheet" href="../static/css/my_css.css">
    </head>
    <body>
    <nav class="navbar navbar-default">
        <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
                        data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">文本域自适应</a>
            </div>
    
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <li ><a href="#">测试1 <span class="sr-only">(current)</span></a></li>
                    <li><a href="#">测试2</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                           aria-expanded="false">选项卡 <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">卡1</a></li>
                            <li><a href="#">卡2</a></li>
                            <li><a href="#">卡3</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="#">卡4</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="#">退出卡</a></li>
                        </ul>
                    </li>
                </ul>
                <form class="navbar-form navbar-left">
                    <div class="form-group">
                        <input type="text" class="form-control" placeholder="请输入xxx">
                    </div>
                    <button type="submit" class="btn btn-default">搜索</button>
                </form>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="#">user</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                           aria-expanded="false">个人中心 <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">卡1</a></li>
                            <li><a href="#">卡2</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="#">卡3</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    
    <div class="container-fluid box" style="padding-right: 10px">
        <div class="row box-wrap">
            <div>
                <div class="col-md-5 fanyi__input__bg col-md-offset-1">
                    <textarea id="inputOriginal" dir="auto" class="input__original__area" placeholder="请输入你要翻译的文字或网址" onchange="wenbenyuchange()"></textarea>
                </div>
            </div>
            <div>
                <div class="col-md-5 fanyi__input__bg">
                    <textarea id="inputOriginal_1" dir="auto" class="input__original__area" placeholder="请输入你要翻译的文字或网址"></textarea>
                </div>
            </div>
    
        </div>
    </div>
    
    
    <div class="footer" style="margin-top: 30px">
        <div class="row">
            <div class="col-md-12 text-center">
                <span>©2019 前端</span>
            </div>
        </div>
    </div>
    <script type="text/javascript" src="../static/JS/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="../static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    <script type="text/javascript">
        //----------底部自适应
        function myfooter() {
            if ($(document.body).height() < $(window).height()) {
                $(".footer").css({position: 'fixed', bottom: 0,  '100%'});
            }
            $(window).resize(function () {
                if ($(document.body).height() < $(window).height()) {
                    $(".footer").css({position: 'fixed', bottom: 0,  '100%'});
                } else {
                    $(".footer").css({position: 'relative'});
                }
            });
        }
        myfooter();
        //----------
        $(function () {
            // 为每一个textarea绑定事件使其高度自适应
            $.each($("textarea"), function (i, n) {
                autoTextarea($(n)[0]);
            });
        });
        /**
         * 文本框根据输入内容自适应高度
         * {HTMLElement}   输入框元素
         * {Number}        设置光标与输入框保持的距离(默认0)
         * {Number}        设置最大高度(可选)
         */
        var autoTextarea = function (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 = 'both';//如果不希望使用者可以自由的伸展textarea的高宽可以设置其他值
    
            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();
    
    
        };
        function wenbenyuchange() {
            var $textdata = $('#inputOriginal');
            $('html ,body').animate({scrollTop: 0},0);
            $textdata.css('font-size','14px');
            console.log($textdata.height());
            $('#inputOriginal_1').css('height',$textdata.height())
        }
    
    </script>
    </body>
    </html>

    CSS

    body {
        overflow-x: hidden;
    }
    
    textarea {
        outline: none;
    }
    
    .fanyi__input__bg {
        background: #f2f2f2;
        position: relative;
        z-index: 1;
        overflow: hidden;
        border-radius: 6px;
        margin-right: 10px;
        padding: 18px 50px 18px 18px;
        border: 1px solid transparent
    }
    
    .input__original__area {
        display: block;
        font-family: ArialMT, "Microsoft YaHei", Arial, sans-serif, Helvetica, STHeiti;
        width: 100%;
        min-height: 156px;
        padding: 0;
        border: 0;
        background: 0 0;
        font-size: 24px;
        color: #333;
        line-height: 30px;
        overflow: auto
    }
    
    .input__original__area::placeholder {
        font-family: Arial-BoldMT;
        font-size: 24px;
        color: rgba(102, 102, 102, .3)
    }
    
    .input__original__area::-moz-placeholder {
        font-family: Arial-BoldMT;
        font-size: 24px;
        color: rgba(102, 102, 102, .3)
    }
    
    .input__original__area::-webkit-input-placeholder {
        font-family: Arial-BoldMT;
        font-size: 24px;
        color: rgba(102, 102, 102, .3)
    }
    
    .input__original__area:-ms-input-placeholder {
        font-family: Arial-BoldMT;
        font-size: 24px;
        color: rgba(102, 102, 102, .3)
    }
    
    .input__original__area::selection {
        background-color: #cfe5ff
    }
    
    .input__original__area:focus {
        border: none
    }
    
    .fanyi__input__bg__ar {
        padding: 18px 18px 18px 50px
    }
    
    .fanyi__input__bg:focus {
        border: 1px solid #0e7dff
    }
    
    .input__target .fanyi__input__bg {
        margin-right: 0;
        margin-left: 10px;
        padding: 0
    }

    结语

    项目需求+搜索资料(JQ+bootstrap)

  • 相关阅读:
    百度AI开放平台 情感倾向分析实例以及gbk编码解决
    根据cid获取哔哩哔哩弹幕
    python3 doc2vec文本聚类实现
    python3 LDA主题模型以及TFIDF实现
    偶得李春芬先生书信一函
    STATA一小步 我的一大步
    2013-2015南京大学历史学系若干考试题目汇编
    ArcPy批量计算Mean Center的两个实例
    解决Gephi导入csv文件时提示“边表格需要一个包含节点标号‘源’和‘目标’列” 问题的两个方案
    Vertx 实现webapi实战项目(二)
  • 原文地址:https://www.cnblogs.com/nixindecat/p/11079897.html
Copyright © 2011-2022 走看看