文本域自适应(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, width: ‘100%‘});
        }
        $(window).resize(function () {
            if ($(document.body).height() < $(window).height()) {
                $(".footer").css({position: ‘fixed‘, bottom: 0, width: ‘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)

原文地址:https://www.cnblogs.com/nixindecat/p/11079897.html

时间: 2024-11-10 15:17:00

文本域自适应(textarea)的相关文章

基于jquery的文本域自适应功能

近日在写一个文本域自适应高度的功能,在网上发现一个效果比较好的方法.自己扩展了这个方法,现在分享给大家,有需要的朋友可以试一下,话不多说上代码. 1 $.fn.autoHeight = function(val) { 2 3 function autoHeight(elem) { 4 elem.style.height = 'auto'; 5 elem.scrollTop = 0; //防抖动 6 elem.style.height = elem.scrollHeight + 'px'; 7 }

textarea文本域的高度随内容的变化而变化

用css控制textarea文本域的高度随内容的变化而变化,不出现滚动条. CSS代码: 复制代码 代码如下: .t_area{ width:300px; overflow-y:visible } <textarea class="t_area"> 随便在这里输入内容,textarea的高度会随着你输入的内容而变化,不会出现滚动条,实现很简单,就是一段css:overflow-y:visible </textarea> 首先,原则上实现textarea自适应必须

GUI编程笔记07:GUI把文本框的值移到文本域案例

1.首先我们了解一下我们的需求,如下: 输入“风清扬”,点击“数据转移”,这样的文本会出现到下面的文本域中,这就是我们的需求. 2.代码如下: package cn.itcast_05; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.Action

Bootstrap系列 -- 16. 文本域textarea

文本域和原始使用方法一样,设置rows可定义其高度,设置cols可以设置其宽度.但如果textarea元素中添加了类名“form-control”类名,则无需设置cols属性.因为Bootstrap框架中的“form-control”样式的表单控件宽度为100%或auto. <form role="form"> <div class="form-group"> <textarea class="form-control&quo

bootstrap-表单控件——文本域textarea

1.运行效果如图所示 2.实现代码如下 <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <title>表单控件--文本域textarea</title>     <!--

HTML学习笔记 域元素(form表单、textarea文本域、fieldset域集合、input使用) 案例 第四节 (原创)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>表单</title> </head> <body> <!--form表单--> <form> 用户名: <!--文本域--> <input type="text">

textarea文本域宽度和高度(width、height)自己主动适应变化处理

文章来源:http://www.cnblogs.com/jice/archive/2011/08/07/2130069.html <HTML> <HEAD> <TITLE>textarea宽度.高度自己主动适应处理方法</TITLE> <!-- 控制宽度的自己主动适应 --> <style type="text/css"> .comments { width:100%;/*自己主动适应父布局宽度*/ overflo

textarea文本域保存的一些思考

textarea文本域保存文本到数据库的时候,数据要做一定的处理,否则数据库的内容不能正确显示在页面上.主要原因就是换行符的不一致造成的. 具体思路是:(1)页面上的内容存到数据库的时候,要把换行符转换成"<br/>": 我在action层: // 使用这句话对页面上传过来的换行符进行处理 liwei 20140724 1115 assignment_teacher_comment = assignment_teacher_comment.replaceAll("

Textarea 单击鼠标 清除默认字/点击文本域 默认内容消失/点击文本框 删除预置内容

Textarea 单击鼠标 清除默认字/点击文本域 默认内容消失/点击文本框 删除预置内容. Textarea 单击鼠标 清除默认字 点击文本域 默认内容消失 点击文本框 删除预置内容 在留言框.搜索栏或者Email订阅栏中有一段默认的文本,比如“请输入您的内容”,如果你在其中点击(窗体获取焦点),这段默认的文本就会自动消失. 第一步:添加代码方式: <head> …. <script type=”text/javascript”> function clearDefault(el