-webkit-box布局无法自动适应高度的bug

  css3的新属性display:-webkit-box带来了前端开发自动适应布局的春天 ,但是我发现这个布局有个问题, 而且这个问题我无法解决;

  描述:如果flex布局内部某一个元素高度自动填高, 把一整个盒子高度顶开, 然后再把该元素的高度缩小,  flex盒子高度还是原来的高度, 高度没有改变, 必须手动重绘dom, 我勒个亲;

  

  DEMO如下:

  只要拉动textarea右下角的方块, 把文本输入框的高度拉高, 再拉小, 你就会看到这个现象

<!DOCTYPE html>
<html>
<head> </head>
<body>
<style>
*{
margin:0;
padding:0;
}
.flex{
display:-webkit-box;display:-moz-box; -webkit-box-orient: horizontal;
            border:1px solid #A7A7A7;
}
.flex .left, .flex .right{
display: -webkit-box;
display:-moz-box; }
        textarea{
overflow:hidden;
} </style>
<script src="http://libs.useso.com/js/jquery/1.8.3/jquery.js"></script>
<div class="flex">
<div class="left">
<textarea > </textarea>
</div>
<div class="right">
heheda
</div>
</div>
<script> function autoHeight(elem) {
//这个有个要注意的地方就是, 要给height设置为auto;, 然后设置scrollHeight才有效;
elem.style.height = 'auto';
elem.scrollTop = 0;
elem.style.height = elem.scrollHeight + 'px';
} var obj = document.getElementsByTagName("textarea")[0];
$(obj).on('keyup', function(){
autoHeight(this);
/*
var _this = this;
setTimeout(function() {
var temp = $(_this).closest(".flex");
$(temp).css("display","inline");
temp.append("<div class='temp'></div>")
temp.find(".temp").remove();
$(temp).css("display","-webkit-box");
},1000)
*/
}); </script>
</body>
</html>

  以上DEMO的问题, 手动强制刷新DOM才能让盒子自动适应, 但是使用setTimeout无法解决, 这个demo在火狐浏览器中没有问题, 所以我归结为chrome的bug;

  

  textarea自动适应

  这是一个让textarea标签自动适应内部内容的DEMO,但是有个问题, 获取textarea的value 写入到div中会出现折行变成空格, 如果把textarea的内容放到pre标签中即可解决“换行变成空格”的问题, DEMO如下:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<style>
*{
margin:0;
padding:0;
}
.flex{
display:-webkit-box;

display:-moz-box;

        -webkit-box-orient: horizontal;
border:1px solid #A7A7A7;
}
.flex .left, .flex .right{
display: -webkit-box;

display:-moz-box;

    }
textarea{
overflow:hidden;
resize:none;
}
.result{
margin:20px;
border:1px solid #FBA733;
}
</style>
<script src="http://libs.useso.com/js/jquery/1.8.3/jquery.js"></script>
<div class="flex">
<div class="left">
<textarea >11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111</textarea>
</div>
<div class="right">
heheda
</div>
</div> <div class="result"> </div> <pre class="result"> </pre>
<script>
function autoHeight(elem) {
//这个有个要注意的地方就是, 要给height设置为auto;, 然后设置scrollHeight才有效;
elem.style.height = 'auto';
elem.scrollTop = 0;
elem.style.height = elem.scrollHeight + 'px';
}; var obj = document.getElementsByTagName("textarea")[0];
$(obj).on('keyup', function(){
autoHeight(this);
});
$(obj).on('input', function() {
$(".result").html( this.value );
});
$(function() {
$("textarea").keyup();
});
</script>
</body>
</html>

  from==》》http://www.cnblogs.com/diligenceday/ 【 博客园 】keep real'

flex布局无法自动适应的bug以及实现textarea根据内容自适应的更多相关文章

  1. flex 布局占位符

    flex 布局占位符 空 span bug .popover-custom-class .system-guide-container .buttons-box { display: flex; fl ...

  2. IE浏览器下flex布局的bug

    原文地址:gitub上的Flexbugs list,可以看到Flex布局在IE糟糕表现的详细描述. 2. Column flex items set to align-items:center ove ...

  3. 解决flex布局下, elementui table组件不能跟随父组件的宽度而变化的bug

    bug: 我在flex布局的元素中使用了elementui的table组件,饿了么的table上会被加一个动态的宽度, 当第一次改变flex元素宽度的时候.table的动态宽度会变化,第二次和以后就不 ...

  4. flex布局 justify-content:space-between; 解决最后一排数量不够自动向两端排列问题和flex布局的元素会有默认间隙(垂直间隙)

    1 .flex 布局两端对齐当最后一排数量不够时,会出现以下布局情况 实现效果: 解决方案:使用after伪类, 解决最后一排数量不够两端分布的情况.宽度就是每张图片的宽度 .list:after { ...

  5. Flex布局【弹性布局】学习

    先让我们看看在原来的学习中遇到的问题 之前在软件工程的大作业中,自己从零开始学习如何开发一个网站,从页面,到后台,当然数据库是大二的必修课 在学习如何编写一个静态页面的时候,完全是自学,自己摸索,所以 ...

  6. 神奇的Flex 布局

    layout是css中的一个重点.传统的页面布局是盒子模型,依赖 display属性 ,position属性 , float属性.它对于那些特殊布局非常不方便,而且定位用多了会出现挺多的bug. 所以 ...

  7. es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式

    es6 Object.assign   目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...

  8. flex布局使用方法简要汇总

    近期因为使用inline-block,在项目部署后出现了一点小问题,几番解决未果,遂使用flex布局,于是借此机会对flex布局的用法做一个简要的汇总. 遇到的bug如下: 本想两个div使用inli ...

  9. Flex 布局教程:语法篇

    作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...

随机推荐

  1. Editor扩展之查看Prefab用在那儿

    Prefab查找需求 在项目开发阶段的中后期,工程中有越来越多的Prefab,当我们要修改一个prefab或删除无用的prefab时,或许我们不是那么清楚该prefab在那些场景中使用着或从未使用过, ...

  2. Java的注解机制——Spring自动装配的实现原理

    http://www.cnblogs.com/Johness/archive/2013/04/17/3026689.html

  3. c# winforms TextBox的记忆功能

    c# winforms TextBox的记忆功能 1:在项目上点右键  sproperties-settings 添加项目 如 MyText  类型 String 2: 获取值:   string l ...

  4. GIT安装和使用

    GIT 首先登陆github账号   在本地创建一个文件夹   点击文件夹,右键,选择Git create repository here 操作之后,会生成一个.git文件(这个文件为隐藏文件) 在此 ...

  5. java 27 - 9 反射之 动态代理的概述和实现

    代理:本来应该自己做的事情,却请了别人来做,被请的人就是代理对象. 举例:春季回家买票让人代买 动态代理: 在程序运行过程中产生的这个对象 而程序运行过程中产生对象其实就是我们刚才反射讲解的内容,所以 ...

  6. PAT 1011. A+B和C (15)

    给定区间[-231, 231]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1行给出正整数T(<=10),是测试用例的个数.随后给出T组测试用例,每组占一行,顺序给出A.B ...

  7. myeclipse 8.5离线安装python插件

    看到网上很多教程扯了一大堆,好麻烦的样子. 1)下载pyhon开发插件,PyDev 2.2.0.zip 我在百度137708820网盘里已分享,链接http://pan.baidu.com/s/1mg ...

  8. 数据表格 - DataGrid - 列表显示

    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding=& ...

  9. BZOJ 1026 【SCOI2009】 windy数

    Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? I ...

  10. Windows Phone App Studio 无码开发手机应用

    上周微软发布了一款基于Web的Windows Phone应用开发工具 "Windows Phone App Studio".它与大家熟知Visual Studio的最大不同之处是W ...