【发布时间】:2021-12-22 11:34:15
【问题描述】:
我选择 CSS flex 来布局我的页面,在下面的代码中我发现了一些对我来说很有趣的东西。首先我放代码,然后我将描述我的问题:
function textBoxToggle(textClass)
{
$(textClass).toggleClass("opened", "fast");
}
*, *::after, *::before {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.w-100 {
width: 100%;
}
.dFlex {
flex: 1 1 auto;
display:flex;
flex-flow:row nowrap;
position:relative;
width:100%;
min-height:100%;
min-width: 0; /* this one right here does it!*/
}
.w-50 {
width: 50%;
border: 1px solid red;
margin: 50px auto;
}
.textClass {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.textClass.opened {
height: auto;
overflow: auto;
white-space: normal;
}
p.textClass {
padding: 15px 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="newStyle2.css">
</head>
<body>
<div class="dFlex">
<div class="w-100">
<p class="textClass">Lorem ipsum dolor sit amet consectetur adipisicing elit. Reprehenderit delectus ullam earum quibusdam suscipit voluptatem, aliquam inventore cumque consequuntur laboriosam nesciunt doloribus tempora, labore vitae dignissimos architecto qui quo. Vel!
</p>
</div>
</div>
<div class="w-100 dFlex">
<div class="w-50">
<div class="w-100">
<form action="">
<!-- <fieldset class="w-100">
<legend class="">Test</legend> -->
<p class="textClass" onclick="textBoxToggle(this);">
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Officiis accusantium voluptatem assumenda tenetur ullam voluptatibus quo quibusdam? Aut enim, pariatur officia sed labore repellat quae dignissimos deleniti illum est commodi?consectetur adipisicing elit. Reiciendis rem exercitationem alias!
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Reiciendis rem exercitationem alias! Ducimus aspernatur quod error asperiores tenetur cumque explicabo voluptates obcaecati fugit temporibus, nobis ex dolorum nihil! Assumenda, error?
</p>
<label for="fname">First name:</label>
<input type="text" id="fname" name="fname"><br><br>
<label for="lname">Last name:</label>
<input type="text" id="lname" name="lname"><br><br>
<!-- </fieldset> -->
</form>
</div>
</div>
<div class="w-50">
Other content
</div>
</div>
<script src="jquery-3.5.1.js"></script>
<script src="javasc.js"></script>
</body>
</html>
如您所见,评论中有“fieldset”和“legend”标签。如果我从他们那里删除评论,我会看到布局变得不正确,左栏转到右栏的一侧,而且我的样式中的 text-overflow: ellipsis; 也不起作用。我知道我的样式表中的white-space: nowrap; 是导致此溢出的原因,但是根据this question,当我们将min-height:0; 设置为我们的flex 父级时(就像我之前所做的那样)它必须正常工作。我还阅读了this question,它说在将display:flex; 应用于fieldset 标记时存在错误。但那是过去的事了,现在浏览器对此没有问题。我也没有直接使用display:flex; 到fieldset 标签,我在fieldset 标签的父级中使用了它。那么问题是什么?为什么我不能在布局中使用fieldset 标签?
这是fieldset标签没有评论的情况:
function textBoxToggle(textClass)
{
$(textClass).toggleClass("opened", "fast");
}
*, *::after, *::before {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.w-100 {
width: 100%;
}
.dFlex {
flex: 1 1 auto;
display:flex;
flex-flow:row nowrap;
position:relative;
width:100%;
min-height:100%;
min-width: 0; /* this one right here does it!*/
}
.w-50 {
width: 50%;
border: 1px solid red;
margin: 50px auto;
}
.textClass {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.textClass.opened {
height: auto;
overflow: auto;
white-space: normal;
}
p.textClass {
padding: 15px 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="newStyle2.css">
</head>
<body>
<div class="dFlex">
<div class="w-100">
<p class="textClass">Lorem ipsum dolor sit amet consectetur adipisicing elit. Reprehenderit delectus ullam earum quibusdam suscipit voluptatem, aliquam inventore cumque consequuntur laboriosam nesciunt doloribus tempora, labore vitae dignissimos architecto qui quo. Vel!
</p>
</div>
</div>
<div class="w-100 dFlex">
<div class="w-50">
<div class="w-100">
<form action="">
<fieldset class="w-100">
<legend class="">Test</legend>
<p class="textClass" onclick="textBoxToggle(this);">
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Officiis accusantium voluptatem assumenda tenetur ullam voluptatibus quo quibusdam? Aut enim, pariatur officia sed labore repellat quae dignissimos deleniti illum est commodi?consectetur adipisicing elit. Reiciendis rem exercitationem alias!
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Reiciendis rem exercitationem alias! Ducimus aspernatur quod error asperiores tenetur cumque explicabo voluptates obcaecati fugit temporibus, nobis ex dolorum nihil! Assumenda, error?
</p>
<label for="fname">First name:</label>
<input type="text" id="fname" name="fname"><br><br>
<label for="lname">Last name:</label>
<input type="text" id="lname" name="lname"><br><br>
</fieldset>
</form>
</div>
</div>
<div class="w-50">
Other content
</div>
</div>
<script src="jquery-3.5.1.js"></script>
<script src="javasc.js"></script>
</body>
</html>
【问题讨论】: