首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带显示器的平滑<button> +图像的ios变通方法:网格;

问带显示器的平滑<button> +图像的ios变通方法:网格;
EN

Stack Overflow用户
提问于 2020-09-13 04:33:07
回答 2查看 51关注 0票数 1

众所周知,在过去的html+css中,没有定义像素大小和一些数学技巧的垂直居中对我们来说是一个巨大的问题。

正如我们所知道的,有display:grid和一些简单的选项来居中:自动,我发现并不是所有的元素都可以在每个浏览器上使用。

请参阅此演示代码:https://jsfiddle.net/2dz7w6L4/

HTML

代码语言:javascript
复制
   <button>
   <img src="https://dummyimage.com/64x64/ff00ff/ffffff.png&text=X">
   <label>Centered Text</label>
   </button>

SCSS

代码语言:javascript
复制
   button{
     border:0; outline:0; margin:0; padding:0;
     padding:1em 1.5em;
     cursor: pointer;

     background-color: green;

     display: grid;
     grid-template-columns: auto auto;
     grid-gap: 1em;

     label{
       font-size: 200%;
       margin: auto;
     }

     img{
       margin: auto;
     }

     &:hover{
       background-color: red;
     }

   }

我喜欢这个按钮的简单居中(特别是垂直居中),以及它的开箱即用文本。但在我的ipad上,文字会被换成一行--图片下面也是如此,没有任何原因。阅读后,这是因为ios不支持display:grid。

我想知道,是否有一种技巧,或者另一种巧妙和现代的方法来构建带有填充的按钮,各种文本大小,以及从头开始的图像/图标等附加元素,而不需要精确调整以确保文本垂直居中,而不管是哪种浏览器、字体大小。当然,不会强制使用像素大小或负边距、行高等内容。

EN

回答 2

Stack Overflow用户

发布于 2020-09-13 17:01:15

最好的解决方案是支持所有设备

HTML:

代码语言:javascript
复制
<button class="btn">
        <img src="asset/img/btn.jpg" alt="" class="btn__img">
        <label class="btn__title">center</label>
</button>

SCSS:

代码语言:javascript
复制
.btn {
 position: relative;
 text-align: center;
 border:0; outline:0; margin:0; padding:0;
 padding:1em 1.5em;
 cursor: pointer;
 background-color: green;
&__img {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
}

&__title {
    font-size: 200%;
}
&:hover{
    background-color: red;
  }}
票数 0
EN

Stack Overflow用户

发布于 2020-09-17 02:15:31

所以我找到的最好的解决方案是使用一个包装器,而不是将display:grid应用于按钮,而是应用于按钮内部的包装器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63864704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档