无论屏幕大小如何,都使用 CSS 修复 DIV 内的 SPAN 位置

Posted

技术标签:

【中文标题】无论屏幕大小如何,都使用 CSS 修复 DIV 内的 SPAN 位置【英文标题】:Fix a SPAN position inside a DIV using CSS irrespective of screen size 【发布时间】:2021-08-01 12:18:43 【问题描述】:

我有一个需求,我需要设计一个带有搜索图标的搜索框。我在下面编写了 html 代码和 CSS 类来实现这一点。它在 13" 屏幕上运行良好。但是当屏幕分辨率或大小发生变化时,搜索框和图标会中断。

<div class="col-sm-3 pull-right">
  <div class="search-box">

    <input type="text" class="portfolio-search-input" placeholder="Search by Benefit name" />

    <span class="">
      <i class="fa fa-search"></i>
    </span>

  </div>
</div>

.portfolio-search-input 
  width: 85%;
  height: 26px;
  margin-top: 5px;
  margin-left: 100px;
  padding: 0 15px;
  outline: none;
  &:focus 
    border: 1px solid;
  


.search-box     
  position: relative;
  clear: both;
  > span 
    color: rgb(209, 15, 15);
    display: inline-block;
    margin-left: 115%;
    position: absolute;
    bottom: 3px;
  


.pull-right 
  float: right;

无论屏幕尺寸/分辨率如何,如何固定尺寸和位置。

在 13" 屏幕上,它的工作正常,如下图所示。

但在更大的屏幕上它会中断,如下所示。

如果我使用margin-left:300px;,它在 13" 屏幕上可以正常工作。在更大的屏幕上,它会显示下面的图像。

【问题讨论】:

将输入设置为位置:相对,将跨度设置为位置:绝对,并应用让我们说对:0; top: 0 到跨度,那么跨度将坚持在输入的右侧,无论您如何调整浏览器的大小 @Kenny 这没有帮助。还是一样的错误。就像它在更大的屏幕尺寸上打破了输入框位置:相对和跨度作为位置:绝对。 【参考方案1】:

.search-box &gt; span 中删除margin-left。并添加right: 0

.portfolio-search-input 中删除margin-left。添加添加到.search-box

这里是sn-p

.portfolio-search-input 
  width: 85%;
  height: 26px;
  margin-top: 5px;
  /* margin-left: 100px; */
  padding: 0 15px;
  outline: none


.portfolio-search-input:focus 
  border: 1px solid;


.search-box     
  position: relative;
  margin-left: 100px;
  clear: both;


.search-box > span 
  color: rgb(209, 15, 15);
  display: inline-block;
  /* margin-left: 115%; Remove this */
  right: 0; /* Add this */
  position: absolute;
  bottom: 3px;


.pull-right 
  float: right;
<div class="col-sm-3 pull-right">
  <div class="search-box">

    <input type="text" class="portfolio-search-input" placeholder="Search by Benefit name" />

    <span class="">
      <svg class="svg-icon" viewBox="0 0 20 20" >
                            <path fill="red" d="M12.323,2.398c-0.741-0.312-1.523-0.472-2.319-0.472c-2.394,0-4.544,1.423-5.476,3.625C3.907,7.013,3.896,8.629,4.49,10.102c0.528,1.304,1.494,2.333,2.72,2.99L5.467,17.33c-0.113,0.273,0.018,0.59,0.292,0.703c0.068,0.027,0.137,0.041,0.206,0.041c0.211,0,0.412-0.127,0.498-0.334l1.74-4.23c0.583,0.186,1.18,0.309,1.795,0.309c2.394,0,4.544-1.424,5.478-3.629C16.755,7.173,15.342,3.68,12.323,2.398z M14.488,9.77c-0.769,1.807-2.529,2.975-4.49,2.975c-0.651,0-1.291-0.131-1.897-0.387c-0.002-0.004-0.002-0.004-0.002-0.004c-0.003,0-0.003,0-0.003,0s0,0,0,0c-1.195-0.508-2.121-1.452-2.607-2.656c-0.489-1.205-0.477-2.53,0.03-3.727c0.764-1.805,2.525-2.969,4.487-2.969c0.651,0,1.292,0.129,1.898,0.386C14.374,4.438,15.533,7.3,14.488,9.77z"></path>
                        </svg>
    </span>

  </div>
</div>

【讨论】:

以上是关于无论屏幕大小如何,都使用 CSS 修复 DIV 内的 SPAN 位置的主要内容,如果未能解决你的问题,请参考以下文章

CSS - 将 div 固定到顶部中心

div+css如何控制图片在电脑屏幕上的比例及位置

html中怎么让div层固定在屏幕中央右边500像素的位置

如何修复由 CSS 动画引起的奇怪色带?

DIV+CSS,如何让图片自适应大小?

CSS如何写一个宽度为屏幕50%的正方形DIV