有没有一种方法只能使用CSS来使按钮具有与兄弟按钮相同的宽度?

时间:2019-11-13 15:51:46

标签: html css

基本上,我有两个按钮,它们的样式相同,并且在父级 div 中彼此并排排列。

<div style="text-align: center">
  <button class="btn btn-primary button1">Button1</button>
  <button class="btn btn-primary button2">Button2</button>
</div>



.btn {
  min-height: 44px;
  width: 100%;
  max-width: 320px;
  position: relative;
  box-sizing: border-box;
  padding: 6px 24px
  border-radius: 4px;
  outline: none;
  cursor: pointer;

  &.btn-primary {
    border: none;
    background-color: #808080;
    color: #FFFFFF;
  }

  &.button1{
    background-color: #FFFFFF;
    color: #000000;
    border: 1px solid #b6b6b6;
  }

  &.button2{
    margin-left: 12px;
    width: auto;
    padding: 6px 36px;
  }
}

由于第二个按钮已翻译成多种语言,因此其宽度设置为自动。这里的问题是第一个按钮必须始终与第二个按钮具有相同的动态宽度。

那么,有一种方法可以仅通过使用CSS在第一个按钮上实现此条件吗?请记住,按钮排在同一行。

2 个答案:

答案 0 :(得分:4)

CSS网格可以做到这一点:

 body {
  text-align: center
 }
.container {
  display: inline-grid;
  grid-template-columns: 1fr 1fr;
  margin:10px;
}

.btn {
  min-height: 44px;
  max-width: 320px;
  box-sizing: border-box;
  padding: 6px 24px border-radius: 4px;
  outline: none;
  cursor: pointer;
}

.btn-primary {
  border: none;
  background-color: #808080;
  color: #FFFFFF;
}

.button1 {
  background-color: #FFFFFF;
  color: #000000;
  border: 1px solid #b6b6b6;
}

.button2 {
  margin-left: 12px;
  padding: 6px 36px;
}
<div  class="container">
  <button class="btn btn-primary button1">Button1</button>
  <button class="btn btn-primary button2">Button2</button>
</div>

<div class="container">
  <button class="btn btn-primary button1">Button1</button>
  <button class="btn btn-primary button2">Button with long text</button>
</div>

<div class="container">
  <button class="btn btn-primary button1">Button1</button>
  <button class="btn btn-primary button2">Button text</button>
</div>

答案 1 :(得分:2)

您还可以使用flex

extension UINavigationController {
    override open func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        let backButton = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
        self.topViewController?.navigationItem.backBarButtonItem = backButton
    }
}
div {
  justify-content: center;
  display: flex;
}

.btn {
  flex: 1;
  min-height: 44px;
  width: 100%;
  max-width: 320px;
  position: relative;
  box-sizing: border-box;
  padding: 6px 24px;
  border-radius: 4px;
  outline: none;
  cursor: pointer;
}
.btn.btn-primary {
  border: none;
  background-color: #808080;
  color: #FFFFFF;
}
.btn.button1 {
  background-color: #FFFFFF;
  color: #000000;
  border: 1px solid #b6b6b6;
  flex-shrink: 0 !important;
}
.btn.button2 {
  margin-left: 12px;
  width: auto;
  padding: 6px 36px;
}

您也可以使用CSS列

<div style="text-align: center">
  <button class="btn btn-primary button1">Button1</button>
  <button class="btn btn-primary button2">Button2</button>
</div>
div {
  column-count:2;
  width:max-content;
  margin:auto;
}

.btn {
  min-height: 44px;
  width: 100%;
  max-width: 320px;
  position: relative;
  box-sizing: border-box;
  padding: 6px 24px;
  border-radius: 4px;
  outline: none;
  cursor: pointer;
}
.btn.btn-primary {
  border: none;
  background-color: #808080;
  color: #FFFFFF;
}
.btn.button1 {
  background-color: #FFFFFF;
  color: #000000;
  border: 1px solid #b6b6b6;
  flex-shrink: 0 !important;
}
.btn.button2 {
  margin-left: 12px;
  padding: 6px 36px;
}