在flex容器中居中的按钮太窄

时间:2018-12-21 16:46:50

标签: html css css3 flexbox

我的项目使用20行x 20列的CSS网格布局(每个单元格屏幕的5%)。其中一个页面有一个按钮。最初,该页面包含在网格列5-8和网格行6-9中,按钮本身没有问题,但是我需要将其居中在网格区域内,因此我使用flexbox在css网格内居中。

按钮文本为“选择要上传的文件”,但问题在于按钮现在仅是单个单词的宽度;我希望按钮的宽度能和所有四个字一样宽。在我添加一个用于使按钮居中的flex容器之前,按钮的宽度与所有四个单词一样宽,但是现在,对于flex容器而言,宽度却没有。

flexbox排列对页面和其他两个页面上的所有其他元素均适用,但是此按钮存在此问题(在Firefox 64上)。我可能需要为其使用唯一的flex-item类,这与下面显示的flex-item类不同。

以下是适用于此按钮的css类:

.center_text_grid {
    display: grid;
    grid-column: 5 / 12;
    grid-row: 6 / 19;
    display: block;
    overflow: auto;
    align-items: center;
    justify-items: center;
}

.flex-item {
  display: flex;
  width: 70%;
  flex-direction: row;
  align-items: center;
  justify-content: center;
}

.upload-btn-wrapper {
  display: inline-block;
  text-align:center;
  border-radius: 15px;
}

.btn {
  border: 1px solid rgb(117,163,126);
  background-color: black;
  width: 75%;
  padding: 8px 20px;
  border-radius: 15px;
  font-size: 20px;
  font-weight: bold;
  font-family: CamphorW01-Thin, sans-serif;
  font-size: 13pt;
  color: rgb(117,163,126);
  cursor: pointer;
}

这是此按钮的html:

<div class="center_text_grid flex-item">
  <div class="upload-btn-wrapper">
  <button class="btn" style="width: 100%">Select file to upload</button>
  <input type="file" name="fileToUpload" />
</div></div><br><br>

我知道这不是一个完整的可复制示例,但是由于这是特定于按钮样式的,所以我希望可以用上面的代码来回答。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

我将您的代码复制到jsfiddle并放在下面。它在Stack Overflow和jsfiddle上运行良好。您的浏览器可能不支持一行代码,从而导致代码无法正常工作。建议您更新浏览器,或切换到其他浏览器。

希望这会有所帮助!

.center_text_grid {
  display: grid;
  grid-column: 5 / 12;
  grid-row: 6 / 19;
  display: block;
  overflow: auto;
  align-items: center;
  justify-items: center;
}

.flex-item {
  display: flex;
  width: 70%;
  flex-direction: row;
  align-items: center;
  justify-content: center;
}

.upload-btn-wrapper {
  display: inline-block;
  text-align: center;
  border-radius: 15px;
}

.btn {
  border: 1px solid rgb(117, 163, 126);
  background-color: black;
  width: 75%;
  padding: 8px 20px;
  border-radius: 15px;
  font-size: 20px;
  font-weight: bold;
  font-family: CamphorW01-Thin, sans-serif;
  font-size: 13pt;
  color: rgb(117, 163, 126);
  cursor: pointer;
}
<div class="center_text_grid flex-item">
  <div class="upload-btn-wrapper">
    <button class="btn" style="width: 100%">Select file to upload</button>
    <input type="file" name="fileToUpload" />
  </div>
</div><br><br>

答案 1 :(得分:0)

同时删除按钮和输入的样式

将它们包装在div中。

将按钮css样式添加到div中。 按钮示例CSS-

static void Main(string[] args)  
{  
    if (Environment.UserInteractive)  
    {  
        MyNewService service1 = new MyNewService(args);  
        service1.TestStartupAndStop(args);  
    }  
    else  
    {  
        // Put the body of your old Main method here.  
    }  
}

答案 2 :(得分:0)

这是我解决此问题的方法:

<div class="upload-btn-wrapper center_text_grid flex-item">
  <button class="btn">Select file to translate</button>
  <input type="file" name="fileToUpload" />
</div><br><br>

正如我最初的问题中所述,此html代码将按钮分为两个div。我更改为单个div,并将upload-btn-wrapper类添加到单个div。我还将.btn类的宽度更改为65%。

仅剩下一个要解决的问题:btn类具有一个悬停选择器,但是按钮文本在悬停时未突出显示:

.btn:hover{
    -webkit-border-radius: 15px;
    -moz-border-radius: 15px;
    border-radius: 15px;
    -webkit-box-shadow: 0px 0px 10px 0px rgba(0, 255, 0, 0.67);
    -moz-box-shadow: 0px 0px 10px 0px rgba(0, 255, 0, 0.67);
    box-shadow: 0px 0px 10px 0px rgba(0, 255, 0, 0.67);
    color: rgb(175,222,162);
}

这是一个文件选择按钮,因此其处理方式与其他按钮不同,但是我还不知道该怎么做。收到答案后,我会发布答案。如果其他人知道,请告诉我们。

感谢那些回答。