已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。
15天前关闭
Improve this question的
所以我想创建一个登录表单。我使用Bootstrap(使用CDN)快速样式化我的表单。我最初给我的按钮类.btn .btn-danger .btn-lg
。但随着设备宽度变小,我需要一个更小的按钮,但我不知道如何在设备宽度变小时关闭.btn-lg
并打开.btn-sm
。所以我创建了两个具有相同文本和属性的按钮,如果设备宽度小于767px,我为.btn-lg
设置display: none;
,如果宽度大于768px,则为.btn-sm
设置display: none;
。就前端而言,这工作正常。我想知道这是否是一个好的做法,以及它是否会在未来的开发中给我带来问题。以下是我的代码片段:HTML:
<form class="form-group">
<input type="text" class="form-control" name="user" placeholder="Username" required>
<input type="password" class="form-control" name="pwd" placeholder="Password" required>
<p>Forgot your password?</p>
<button type="submit" class="btn btn-danger bg-gradient btn-lg">LOG IN</button>
<button type="submit" class="btn btn-danger bg-gradient btn-sm">LOG IN</button>
</form>
字符串
CSS:
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.btn-danger {
background-color: orangered;
color: white;
}
.btn-lg {
border-radius: 30px;
display: none;
}
.btn-sm {
border-radius: 30px;
}
@media screen and (min-width: 768px) {
.btn-lg {
display: block;
margin: auto;
}
.btn-sm {
display: none;
}
}
型
2条答案
按热度按时间k0pti3hp1#
我相信这取决于情况,但我个人更喜欢只有一个元素为它.下面是一个可能的解决方案,这可能不是每个人:
字符串
我假设你的问题的主要问题是关于每个视口大小的不同按钮样式,而不是关于按钮本身的功能。Bootstrap有这些“显示属性符号”和“布局断点”,可以用于处理视口更改的元素。
按钮的子元素是按钮样式化的地方:
*小于
768px
的视口当视口大小为>=768px
时,<span class="btn btn-danger btn-sm d-md-none">BTN</span>
元素将在d-md-none
的帮助下隐藏。*大于或等于
768px
的视口只有在d-none d-md-inline
的帮助下,当视口大小为>=768px
时,才会出现另一个<span class="btn btn-danger btn-lg d-none d-md-inline">BTN</span>
元素。可以看到工作样本here。调整浏览器宽度以查看结果。
的数据
我上面提供的解决方案不需要额外的自定义样式来处理视口的变化,而且只有一个按钮可以使用。在我看来,它更简单,更容易维护。
rdrgkggo2#
我总是面临同样的问题和困境,特别是在使用Bootstrap的时候,我总是想尽可能少地写CSS代码,所以我总是喜欢下面的第一种方法;
方法1 -具有2个按钮;
拥有两个不同的按钮并根据设备宽度显示它们并不是响应式设计的最有效或最佳实践。它可能会导致未来的维护问题,并使代码变得复杂。
但是,这是解决问题的最简单方法。此外,对于进一步的设计请求,您将有两个不同的按钮来进行这些更改。(例如:
font-size
)。您可以只添加fs-4
和fs-6
类到按钮。我们可以通过使用Bootstrap的内置类来实现所需的响应性,而无需编写任何额外的CSS代码。
字符串
方法2 -使用CSS的按钮;
这个解决方案也适用于大多数人,但它需要一点CSS代码来更改按钮宽度。您可以使用CSS媒体查询来设置登录按钮的宽度。
型
所以,这两种方法都是正确的,它们之间的选择需要权衡,这应该由你根据你的情况来决定。