隐藏其中一个按钮,是个好方法吗?[关闭]

Hiding one of the button, is it a good method? [closed]

提问人:Navaneeth Reddy 提问时间:10/27/2023 更新时间:10/28/2023 访问量:79

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章用事实和引文来回答。

20天前关闭。

所以我想创建一个登录表单。我正在使用 Bootstrap(使用 CDN)来快速设置我的表单样式。我最初给了我的按钮类.但是随着设备宽度变小,我需要一个更小的按钮,但是如果设备宽度变小,我不知道如何关闭和打开。因此,我创建了两个具有相同文本和属性的按钮,如果设备宽度小于 767px,则我为 768px 设置,如果宽度大于 768px,则相同。就前端而言,这工作正常。我想知道这是否是一种好的做法,它会给我未来的发展带来问题吗? 下面是我的代码片段: HTML格式:.btn .btn-danger .btn-lg.btn-lg.btn-smdisplay: none;.btn-lg.btn-sm

<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;
    }
}
html css twitter-bootstrap 前端

评论


答:

1赞 o q 10/27/2023 #1

我相信这取决于具体情况,但我个人更喜欢只有一个元素。以下是可能的解决方案之一,可能并不适合所有人:

<button type="submit" class="btn m-0 p-0">
    <span class="btn btn-danger btn-sm d-md-none">BTN</span>
    <span class="btn btn-danger btn-lg d-none d-md-inline">BTN</span>
</button>

我假设您问题的主要问题更多的是关于每个视口大小的不同按钮样式,而不是按钮本身的功能。Bootstrap 具有这些“显示属性表示法”和“布局断点”,可用于处理视口更改上的元素。

按钮的子项是按钮样式发生的位置:

  • 视口小于 768 像素当视口大小在 的帮助下,此元素将被隐藏。<span class="btn btn-danger btn-sm d-md-none">BTN</span>>=768pxd-md-none
  • 视口大于或等于 768px仅当视口大小在 的帮助下出现另一个元素。<span class="btn btn-danger btn-lg d-none d-md-inline">BTN</span>>=768pxd-none d-md-inline

工作示例可以在这里看到。调整浏览器宽度以查看结果。

enter image description here

我上面提供的解决方案不需要额外的自定义样式来处理视口更改,并且只有一个按钮可以使用。在我看来,它更简单,更容易维护。

评论

0赞 Navaneeth Reddy 10/27/2023
我不完全明白它在做什么,你能详细说明一下吗
0赞 Navaneeth Reddy 10/28/2023
@o非常感谢,我现在明白了
1赞 oguzhancerit 10/27/2023 #2

我总是面临同样的问题和困境,尤其是在使用 Bootstrap 时。我总是想尽可能多地编写更少的CSS代码,所以我总是更喜欢下面的第一种方法;

方法 1 - 有 2 个按钮;

拥有两个不同的按钮并根据设备宽度显示它们并不是响应式设计的最有效或最佳实践。它可能会导致将来的维护问题,并使您的代码变得复杂。

但是,这是解决问题的最简单方法。除此之外,对于进一步的设计请求,您将有两个不同的按钮来进行这些更改。(示例:)。您只需将 和 类添加到您的按钮中即可。font-sizefs-4fs-6

我们可以通过使用 Bootstrap 的内置类来实现所要求的响应能力,而无需编写任何额外的 CSS 代码。

<form>
    <!-- Other Form Elements -->
    <button type="submit" class="btn btn-danger btn-lg d-none d-md-inline">Login</button>
    <button type="submit" class="btn btn-danger btn-sm d-inline d-md-none">Login</button>
</form>

方法 2 - 带有 CSS 的按钮;

这个解决方案也适用于大多数人,但它需要一些CSS代码来改变按钮的宽度。您可以使用 CSS 媒体查询来设置登录按钮的宽度。

<form>
    <!-- Other Form Elements -->
    <button type="submit" class="btn btn-danger btn-lg login-button">Login</button>
</form>
<style>
@media (min-width: 992px) {
    .login-button {
       width: 120px; /* Adjust the width as you need */
    }
}

@media (max-width: 576px) {
    .login-button {
        width: 60px; 
    }
}
</style>

因此,这两种方法都是正确的,它们之间的选择需要权衡,应由您根据自己的情况决定。

评论

0赞 Navaneeth Reddy 10/27/2023
谢谢,一个小疑问,我不能像右一样使用标签选择器来设置它的样式,因为引导程序是在标签 css 之后应用的button {}
1赞 oguzhancerit 11/2/2023
您始终可以通过添加 !important 来覆盖 Bootstrap CSS 代码。所以,是的,你可以。
1赞 Navaneeth Reddy 11/3/2023
多谢。我不知道我能做到