-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. UI的重用性

    UI抽取思路 一款手机游戏中UI有几十个到上百个不等,如果一个一个做这些UI,无疑会花费很多时间. 近期我们的游戏UI已经是第N次改版了,经过这N多次的修改,我总结了UI其实有很多的共性(就是相同性) ...

  2. SVN的使用方法

    SVN的使用方法: 新建文件夹:文件夹1 在文件夹上点击右键--选择 SVN Checkout--弹出checkout窗口 下载文件的url获取:打开SVN--在要下载的文件上点击右键--点击Copy ...

  3. QuickFix/N简介

    QuickFix/N简介  FIX是Financial Information eXchange的简称.FIX是一种专门为实时电子证券交易设计的标准消息协议.该协议由FIX protocol, Ltd ...

  4. jmeter(一)基础介绍

    参考书籍:段念<软件性能测试与案例剖析>——第二版 推荐一本书<零成本实现web性能测试——基于Apache—jmeter>,主要内容是一些关于jmeter的实战使用,想学习的 ...

  5. 002商城项目:maven工程的测试以及svn的使用

    我们上一篇文章搭建了maven工程,这一篇文章我们就要测试这个工程. 1: 由于这个工程还没有页面,我们要首先建立一个页面.在建立页面的jsp的过程中,我发现了一个问题,我这个eclipse由于缺少J ...

  6. POJ 3714 Raid

    Description After successive failures in the battles against the Union, the Empire retreated to its ...

  7. Linux 网络编程详解七(并发僵尸进程处理)

    在上一篇程序框架中,解决了子进程退出,父进程继续存在的功能,但是多条客户端连接如果同一时间并行退出,导致服务器端多个子进程同一时间全部退出,而SIGCHLD是不可靠信号,同时来多条信号可能无法处理,导 ...

  8. TopCoder

    在TopCoder下载好luncher,网址:https://www.topcoder.com/community/competitive%20programming/ 选择launch web ar ...

  9. Java7并发编程实战(一) 线程的等待

    试想一个情景,有两个线程同时工作,还有主线程,一个线程负责初始化网络,一个线程负责初始化资源,然后需要两个线程都执行完毕后,才能执行主线程 首先创建一个初始化资源的线程 public class Da ...

  10. [C]基本数据类型:整型(int)用法详解

    1.整型int C语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int是整型之一,一般被称为整型.以后,在不产生歧义的情况下,我们把整数类型和int都称为整 ...