CSS基础:flex布局子元素被撑大(文本省略号)

news/2024/5/19 17:00:18 标签: CSS3, flex, 撑大, 省略号, flex布局

文本撑大子盒子

在使用flex布局中,会有下面这样一个问题。

这种问题不但会让盒子撑大,而且还有自己在再使用超过文本长度使用省略号的时候,也会再拉动窗口的时候,变的没有效果。

如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
    <title>测试文档</title>
    <style>
        .box{
            height: 100px;
            display: flex;
            background-color: #55a532;
            overflow: hidden;
        }
        .box div{

            flex: 1;
            background-color: blue;
            border: 1px solid black;
        }


    </style>
</head>
<body>
<div class="box1">
    <div>1</div>
    <div>22222222222222222222222222222222222</div>

    <div>3</div>
</div>

</body>
</html>

在这里插入图片描述

既然你搜索本篇文章,自然知道单独添加overflow: hidden;等操作都是无效的。

这个时候,目前最常用的方式,就在文本多的那个子元素中加入:

width:0;

演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
    <title>测试文档</title>
    <style>
        .box{
            height: 100px;
            display: flex;
            background-color: #55a532;
        }
        .box div{
            flex: 1;
            background-color: blue;
            border: 1px solid black;
        }
        #test{
            width: 0;
            text-overflow: ellipsis;
            overflow: hidden;
            white-space: nowrap;
        }

    </style>
</head>
<body>
<div class="box">
    <div>1</div>
    <div id="test">22222222222222222222222222222222222</div>

    <div>3</div>
</div>

</body>
</html>

在这里插入图片描述

解决的原理是什么

看似解决问题,但是为什么必须写宽度为0呢?

比如: width: 2000px;看效果如何?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
    <title>测试文档</title>
    <style>
        .box{
            height: 100px;
            display: flex;
            background-color: #55a532;
        }
        .box div{
            flex: 1;
            background-color: blue;
            border: 1px solid black;
        }
        #test{

            width: 2000px;
            text-overflow: ellipsis;
            overflow: hidden;
            white-space: nowrap;
        }

    </style>
</head>
<body>
<div class="box">
    <div>1</div>
    <div id="test">22222222222222222222222222222222222</div>
    <div>3</div>
</div>

</body>
</html>

在这里插入图片描述

竟然也可以,那么说明和设置的宽度没有关系,那么再大胆的搞一下:

将第二个子元素div标签变成p标签.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
    <title>测试文档</title>
    <style>
        .box{
            height: 100px;
            display: flex;
            background-color: #55a532;
        }
        .box div{
            flex: 1;
            background-color: blue;
            border: 1px solid black;
        }
        #test{

            width: 2000px;
            text-overflow: ellipsis;
            overflow: hidden;
            white-space: nowrap;
        }

    </style>
</head>
<body>
<div class="box">
    <div>1</div>
    <p id="test">22222222222222222222222222222222222</p>
    <div>3</div>
</div>

</body>
</html>

看一下结果:

在这里插入图片描述

竟然变了,所以就要研究一下div标签和p标签在过程中最大的区别就是没有设置:flex:1;

所以加上:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
    <title>测试文档</title>
    <style>
        .box{
            height: 100px;
            display: flex;
            background-color: #55a532;
        }
        .box div{
            flex: 1;
            background-color: blue;
            border: 1px solid black;
        }
        #test{
           flex: 1;
            width: 2000px;
            text-overflow: ellipsis;
            overflow: hidden;
            white-space: nowrap;
        }

    </style>
</head>
<body>
<div class="box">
    <div>1</div>
    <p id="test">22222222222222222222222222222222222</p>
    <div>3</div>
</div>

</body>
</html>

在这里插入图片描述

现在可以看出,可以实现了。

总结:

  • 再同时设置宽度(width)和(flex:数值)的时候,默认是flex权限比单独设置宽度高,所以采用flex的属性。
  • 如果只是单独是flex:数值定义宽度的时候,就会被子类中的文字撑大。因为width虽然不会对宽度生效,但是会告诉浏览器这个是一个固定的宽度,不要让自己的子元素给撑大了。

一句话概括就是:flex决定了宽度,而width决定是否可以撑大


http://www.niftyadmin.cn/n/619604.html

相关文章

CSS基础: rem和媒体查询

rem单位 em 单位 首先说一个单位&#xff1a;em em 值的大小是动态的。当定义或继承font-size属性时&#xff0c;1em等于该元素的字体大小。如果你在网页中任何地方都没有设置文字大小的话&#xff0c;那它将等于浏览器默认文字大小&#xff0c;通常是16px。所以通常1em 16…

CSS基础:Less的使用以及注意项

前言 CSS在开发的时候会发现一件事&#xff0c;就是无法使用方法以及加入逻辑运算&#xff0c;这个时候就有大神发明了一门兼容CSS的扩展语言Less&#xff08;Leaner Style Sheet&#xff09;。 简单的说就是安装less的要求&#xff0c;可以使用一些编程语言中的变量&#xf…

CSS基础:vw和vh是什么

前面聊两个相对的单位em和rem&#xff0c;不过随着时代的发展&#xff0c;em和rem对于有些移动端的内容显示虽然可以达到效果&#xff0c;所以又衍生了两个单位vw和vh。 两个也是相对单位不过其相对的是视口&#xff08;非body标签定义的宽度&#xff09;的&#xff0c; vw&a…

JavaScript基础:Math,Date,String常用方法。

JavaScript中对象主要有3种&#xff1a;自定义对象&#xff0c;内置对象&#xff0c;浏览器对象。 自定义对象&#xff1a;就是自己定义的对象。内置对象&#xff1a;就是JavaScript自带的一些对象&#xff0c;比如前面聊的数组等&#xff0c;说白了就是自己可以直接用的对象以…

JavaScript基础:DOM操作之获得元素方法

现在聊一下JavaScript中的DOM操作&#xff0c;简单是说就是通过js操作页面的行为。本篇主要聊如何获得元素以及一些定义。 简介 DOM ( Document Object Model) : 文档对象模型&#xff0c;是W3C组织推荐处理可扩展语言&#xff08;HTML或者XML&#xff09;的标准编程接口。 …

JavaScript基础: DOM操作中常用事件

上一篇聊了如何同JavaScript获得页面元素&#xff0c;而获得页面元素的的目的就是操作这个元素的一行为&#xff0c;而这个行为是通过某个条件进行触发的。而这个一系列在JavaScript中称之为事件。 由此可以看出事件分三个部分&#xff1a; 事件源头&#xff1a; 也就是要操作…

JavaScript基础: DOM中操作属性以及自定义属性

上一篇聊了一些常用的事件以及演示其如何使用&#xff0c;演示的时候发现一件事情&#xff0c;那就是DOM操作不单是得到元素&#xff0c;还可以修改元素的属性。现在开始如何操作其属性。 普通自带的属性 这些属性是某些标签自带的属性比如src&#xff0c;alt等 现在举个例子…