为啥当我按下刷新时,选择中的下拉箭头会改变外观和移动位置?

Posted

技术标签:

【中文标题】为啥当我按下刷新时,选择中的下拉箭头会改变外观和移动位置?【英文标题】:Why does drop down arrow in select change appearance and shift positon when I press refresh?为什么当我按下刷新时,选择中的下拉箭头会改变外观和移动位置? 【发布时间】:2019-12-23 05:54:09 【问题描述】:

为什么刷新网页时下拉箭头会改变外观?从而在两个盒子上移动内容一秒钟。 (选择一个类别)(选择一个国家)

这里是the link!

下拉箭头 (选择一个类别) 和 (选择一个国家)在页面刷新时更改。

select 
  width: 100%;
  padding: 1.5rem;
  border-radius: .3rem;
  background-color: #fff;
  box-shadow: 0 0.2rem 1rem 0 rgba(0, 0, 0, .1);
  border: .1rem solid rgba(0, 0, 0, .15);


select.small 
  padding: .9rem;


select.selectized 
  display: block !important;
  visibility: hidden;
  position: absolute;
  z-index: -9999;


.selectize-control 
  display: inline-block;
  width: 100%;


.selectize-control .selectize-input 
  transition: .3s ease;
  border-radius: .3rem;
  font-weight: 500;
  padding: 1.7rem;
  height: auto;
  background-image: none;
  background-color: #fff;
  position: relative;
  line-height: inherit;

【问题讨论】:

【参考方案1】:

这是因为 selectize 库是异步加载的(例如,它不会立即应用)。

所以浏览器做的第一件事就是解析 html,然后加载 CSS。此时,浏览器呈现网页。由于您选择的组件是<select> 标签,因此浏览器会按原样呈现它们。在呈现初始页面的同时,浏览器获取 javascript 文件。一旦完成加载它们,它将执行脚本 - 这就是应用 selectize 并将 select 下拉列表替换为其自定义 JS 实现的时候。

那么我们该如何解决这个问题呢?好吧,这取决于您使用的很多库(而且我不熟悉 Selectize,所以我只会给您这个概念 - 您需要弄清楚如何使用您正在使用的库进行此操作使用)

您当前实施的好处是它是“渐进式增强”。这意味着如果 JavaScript 文件没有加载,选择可以正常工作;或缓慢加载(例如在移动设备上)。要保留此功能,您唯一可以做的就是使用 CSS 为选择设置样式,以使它们看起来尽可能接近 Selectize。现在你的 CSS 规则是针对 .selectize-control 和其他库特定的类名。您可以尝试在 Selectize 加载之前直接在 HTML 中应用这些类;或通过不定位选择类来设置您的选择。

【讨论】:

以上是关于为啥当我按下刷新时,选择中的下拉箭头会改变外观和移动位置?的主要内容,如果未能解决你的问题,请参考以下文章

WinAPI ComboBox 不显示下拉列表

当我按下返回时,如何刷新 recyclerview 项目?

为啥有时我按下 AnnotationView 时图像消失了?

为啥当我按下返回按钮时我的程序崩溃

我希望我的引导轮播在按下键盘左右箭头时滑动

使用 Javascript 将下拉列表的多项选择保存到变量