- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 html 页面有一个容器、一个左 div 和一个右 div。左右div都封装在容器内,宽度分别为20%和80%。
问题
在#right
div 中,我有一个fieldset
,它的width
设置为auto
。这个 fieldset
有两个 html 元素 .form-label
和 .form-input
都有相同的宽度 48%
。问题是,如果我的标签之一有大文本(不大于右侧 div 中的可用空间,并且根据所有规则),那么字段集只会扩展到特定宽度,然后我的标签和输入元素就会停留在同一行被移动到两个不同的行。即使 div 仍有扩展空间,也会发生这种情况。
注意:我想指出的是,尽管该问题同时适用于 firefox 和 chrome,但该问题在 chrome 中更为明显,即使是中等长度的文本,如示例中所示。
代码如下:[请查看全屏输出以了解问题]
.container
{
box-sizing: border-box;
max-width: 100%;
position:relative;
float:bottom;
height: 100%;
margin: 6rem 0 1.5rem 0;
overflow-x: auto;
clear: both;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-wrap:nowrap;
flex-basis:0;
align-items:stretch;
justify-content: center;
}
#left{
margin: 0;
width:20%;
padding: 4px 4px 4px 4px;
color: #000011;
font-weight:bold;
text-align: center;
order:0;
flex-order: 0;
-webkit-order: 0;
-ms-flex-order: 0;
align-self:stretch;
}
#right{
margin-top: 0;
width: 80%;
padding: 4px 4px 4px 6px;
text-align: center;
flex-order: 1;
order:1;
-webkit-order: 1;
-ms-flex-order: 1;
align-self:stretch;
overflow: auto;
}
.form{
text-align:right !important;
}
.form-input{
width:48%;
margin-left:0.5rem !important;
margin-bottom: 0.5rem !important;
vertical-align: middle;
display: inline-block;
text-align: left;
}
.form-label{
width:48%;
margin-right: 0.5rem;
margin-bottom: 0.5rem;
vertical-align: super ;
}
.form-button{
width:auto;
margin-top: 1rem;
}
fieldset{
width: auto;
max-width: 100%;
display:inline;
margin: 1rem auto 2rem auto;
border-radius: 0.5rem;
border: 3px double #000000;
}
<div class="container">
<div id="left">
blah blah balah blah blah.......
</div>
<div id="right">
<fieldset class="form">
<legend class="fit-title-blackgrad">Defaulter List Selection</legend>
<div>
<label class="form-label">Select Semester</label>
<select class="form-input selecttodiv" name="dsem" id="dsem" tabindex="1" required=""><option value="">------</option><option value="I">I</option><option value="II">II</option><option value="III">III</option><option value="IV">IV</option><option value="V">V</option><option value="VI">VI</option><option value="VII">VII</option><option value="VIII">VIII</option> </select>
</div>
<div>
<label class="form-label">From (Month)</label>
<select class="form-input" name="dfmonth" id="dfmonth" tabindex="2" required=""><option value="">------</option><option value="7">July</option> </select>
</div>
<div>
<label class="form-label">Cut-Off Percentage........................</label>
<input class="form-input" type="number" min="50" max="75" name="dcutoff" id="dcutoff" tabindex="4" value="75" required="">
</div>
<div>
<input type="submit" class="button form-button" value="Load">
</div>
</fieldset>
</div>
</div>
我已经浏览了各种帖子,但是我无法找到解决方案。
我希望有人在这里帮助我。
在此先感谢您的帮助。
更新
让我详细解释一下到底发生了什么。
#right
容器的宽度在全屏时为 1071px。 fieldset
是 #right
中表单元素的容器 div 是一个 inline
元素,因为我不希望它占据全屏但是,如果它有那么多内容。因此 fieldset
可以占用 100%
的 max-width
。现在 fieldset
的总 width
在 .form-input
和 .form-label
之间平均分配(即 宽度:48%
)。上述两个元素都包含在 div 中,除 overflow:hidden;' 外,该 div 没有分配任何 css 属性。因此,考虑到 1066px 的宽度,
.form-input 和 '.form-label
中的每一个都应该能够占据 511px
的最大宽度。但这不会发生在 mycase 中。
如果您在全屏中看到给定的示例。你会发现即使在#right
div 中可用的总空间为1066px。我的 cut-off percentage... 标签仅占用 272px
,相应的输入占用大约 229px
。这两个元素出现在两条不同的行上,即使它们应该出现在同一行上。它们的 width's+margins+paddings+borders=524px
的总和远小于可用的总空间,即 1066px。即使我添加了 fieldset
的 padding、margin 和 border,总宽度还是 550px。
所以我的问题是,为什么字段集不会根据其内部内容的宽度扩展,我该怎么做才能在不影响我的网站布局的情况下克服这个问题。
注意:我不希望标签分成单独的行,因此在这种情况下单独使用 display:inline-block;
不是一个选项。我也曾尝试设置 white-space:nowrap
但是,这会导致我的字符串被截断,即它一直向右流动,直到它被右边的输入元素隐藏为止。
min-width 和
max-width` 已被删除,因为它没有任何作用,正如我在与@Ankush 讨论问题时所意识到的那样
最佳答案
好的,所以我全屏运行了您的代码片段,并使用了 width 属性,问题出在表单标签和表单输入的宽度值上。
首先,您指定了 max-width、min-width 属性以及 width 两者的属性。但是,当您通过定义 width:48% 指定特定宽度值时,定义 min-width 和 max-width 没有任何意义,因为您已经为容器定义了固定宽度,所以 min -width 和 max-width 将无效。
但主要问题是定义label 标记的宽度。 Label 标签是一个内联元素。因此,您无法真正定义它的宽度。
所以你的情况是,当标签标签中文本的宽度最初超过定义的宽度值时,宽度的总和 的表单输入和表单标签超过 100% 值。
所以现在 fieldset 试图增加它的宽度,但是这种增加 fieldset 宽度的行为会导致增加表单标签的整体宽度(对我们有利)以及表单输入的宽度(这对我们不利,因为它减少了总可用空间)。
因此,现在由于字段集宽度的增加而增加的表单标签宽度不足以容纳标签标签中文本的宽度,因为文本的宽度已经大于并且将始终大于您增加的宽度由于增加了字段集的宽度。
因此,如果您希望 label 标记遵循您定义的宽度,那么您只需将 display 定义为 inline-block
但是这会在标签文本超过定义的宽度时将其拆分为多行,您一开始就不想这样做,因为它会破坏自动增加字段集宽度的目的。
所以我看到的最合适的解决方案是在 rem 中限制 form-input 的 max-width 并注释掉固定的 width 值表单输入,因为这将帮助您消除我在上面提到的对我们不利的因素。
关于html - div 未根据内部内容宽度扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38682548/
我找到了 this excellent question and answer它以 x/y(加上 center x/y 和 degrees/radians)开始并计算旋转- 到 x'/y'。这个计算很
全部: 我已经创建了一个 Windows 窗体和一个按钮。在另一个线程中,我试图更改按钮的文本,但它崩溃了;但是如果我尝试更改按钮的颜色,它肯定会成功。我认为如果您更改任何 Windows 窗体控件属
本网站的另一个问题已证实,C 中没有缩写的字面后缀,并且可以执行以下操作: short Number = (short)1; 但是转换它和不这样做有什么区别: short Number = 1; 您使
我有下表: ID (int) EMAIL (varchar(50)) CAMPAIGNID (int) isSubscribe (bit) isActionByUser (bit) 此表存储了用户对事
也就是说,无需触发Javascript事件即可改变的属性,如何保留我手动选中或取消选中的复选框的状态,然后复制到另一个地方? 运行下面的代码片段并选中或取消选中其中的一些,然后点击“复制”: $('#
我在网上找到的所有关于递增指针导致段错误的示例都涉及指针的取消引用 - 如果我只想递增它(例如在 for 循环的末尾)并且我不在乎它是否最终进入无效内存,因为我不会再使用它。例如,在这个程序中,每次迭
我有一个 Spring MVC REST 服务,它使用 XStream 将消息与 XML 相互转换。 有什么方法可以将请求和响应中的 xml(即正文)打印到普通的 log4j 记录器? 在 Contr
做我的任务有一个很大的挑战,那就是做相互依赖的任务我在这张照片中说的。假设我们有两个任务 A 和 B,执行子任务 A1、A2 和 B1、B2,假设任务 B 依赖于 A。 要理想地执行任务 B,您应该执
通过阅读该网站上的几个答案,我了解到 CoInitialize(Ex) should be called by the creator of a thread 。然后,在该线程中运行的任何代码都可以使
这个问题已经困扰我一段时间了。我以前从未真正使用过 ListViews,也没有使用过 FirebaseListAdapters。我想做的就是通过显示 id 和用户位置来启动列表的基础,但由于某种原因,
我很难解释这两个(看似简单)句子的含义: “受检异常由编译器在编译时检查” 这是什么意思?编译器检查是否捕获了所有已检查的异常(在代码中抛出)? “未经检查的异常在运行时检查,而不是编译时” 这句话中
我有一个包含排除子字符串的文本文件,我想迭代该文件以检查并返回不带排除子字符串的输入项。 这里我使用 python 2.4,因此下面的代码可以实现此目的,因为 with open 和 any 不起作用
Spring 的缓存框架能否了解请求上下文的身份验证状态,或者更容易推出自己的缓存解决方案? 最佳答案 尽管我发现这个用例 super 奇怪,但您可以为几乎任何与 SpEL 配合使用的内容设置缓存条件
我有以下函数模板: template HeldAs* duplicate(MostDerived *original, HeldAs *held) { // error checking omi
如果我的应用程序具有设备管理员/设备所有者权限(未获得 root 权限),我如何才能从我的应用程序中终止(或阻止启动)另一个应用程序? 最佳答案 设备所有者可以阻止应用程序: DevicePolicy
非常简单的问题,但我似乎无法让它正常工作。 我有一个组件,其中有一些 XSLT(用于导航)。它通过 XSLT TBB 使用 XSLT Mediator 发布。 发布后
我正在将一个对象拖动到一个可拖放的对象内,该对象也是可拖动的。放置对象后,它会嵌套在可放置对象内。同样,如果我将对象拖到可放置的外部,它就不再嵌套。 但是,如果我经常拖入和拖出可放置对象,则可拖动对象
我正在尝试为按钮和弹出窗口等多个指令实现“取消选择”功能。也就是说,我希望当用户单击不属于指令模板一部分的元素时触发我的函数。目前,我正在使用以下 JQuery 代码: $('body').click
我从 this question 得到了下面的代码,该脚本用于在 Google tasks 上更改 iframe[src="about:blank"] 内的 CSS使用 Chrome 扩展 Tempe
我有一些 @Mock 对象,但没有指定在该对象上调用方法的返回值。该方法返回 int (不是 Integer)。我很惊讶地发现 Mockito 没有抛出 NPE 并返回 0。这是预期的行为吗? 例如:
我是一名优秀的程序员,十分优秀!