HTML 选择选项文本等宽

2024-03-11

我正在尝试选择使用等宽字体的选项,以便当您单击下拉菜单时它们会垂直排列。我试图将代码左对齐,后跟破折号,然后是描述。我使用编码空格添加了选项,以便每个选项在破折号之前具有相同数量的字符,但它们仍然没有对齐。我尝试了新的快递和等宽字体。我可以看出它正在使用字体,因为它们发生了变化,但它们仍然没有对齐。这是代码:

<!DOCTYPE html>
<html>
<head>
 <title>font test</title>
 <style>
 select, option{
  font-family:monospace, monospace;
 }
 </style>
</head>
<body>
 <form>
  <select name=SOURCECODE>
   <option value="" selected>Select a Option</option>
   <option value="A">A&nbsp;&nbsp;&nbsp;&nbsp;- TEST A</option>
   <option value="AB">AB&nbsp;&nbsp;&nbsp;- TEST AB</option>
   <option value="ABC">ABC&nbsp;&nbsp;- TEST ABC</option>
   <option value="ABCD">ABCD&nbsp;- TEST ABCD</option>
   <option value="A">A&nbsp;&nbsp;&nbsp;&nbsp;- TEST A</option>
   <option value="AB">AB&nbsp;&nbsp;&nbsp;- TEST AB</option>
   <option value="ABC">ABC&nbsp;&nbsp;- TEST ABC</option>
   <option value="ABCD">ABCD&nbsp;- TEST ABCD</option>
  </select>
 </form>
</body>
</html>

有办法让这项工作发挥作用吗?

****注意这似乎只是 Firefox 的问题


好吧,看了几篇文章,看来这是 Mozilla Firefox 的 bug,目前无法实际设置字体样式(截至 2018 年 5 月 10 日)。我亲自测试过59.0.2 and 60.0在 Windows 10 (x64) 上,两者都有相同的错误。

  • 5年前的错误报告:https://bugzilla.mozilla.org/show_bug.cgi?id=910022 https://bugzilla.mozilla.org/show_bug.cgi?id=910022
  • 11 个月前的错误报告(针对 BG 颜色):https://bugzilla.mozilla.org/show_bug.cgi?id=1376443 https://bugzilla.mozilla.org/show_bug.cgi?id=1376443
  • 关于同一主题的SO问题:Firefox 中的 不再支持 CSS 字体系列? https://stackoverflow.com/questions/39884774/css-font-family-support-dropped-for-select-in-firefox

我也注意到这篇文章关于option tag:

Firefox 拒绝将背景颜色应用于选择菜单上的选项标签。

自 Firefox 48 和 + 起,在 Windows 7、8.1 和 10(所有 x64)上遇到的问题

在 Firefox 48 和 +、Windows XP 32 位上未遇到此问题


通常有效的解决方案(但在这种情况下不起作用):

  • 将字体系列更改为等宽字体
  • 添加选项卡(&#9;) and <pre></pre> tags
  • 正如 Kelvin Samuel 指出的,创建自己的自定义 Select 可能会起作用(例如,以下本教程 https://www.w3schools.com/howto/howto_custom_select.asp,参见下面的工作解决方案)

从教程中自定义工作选择:

var x, i, j, selElmnt, a, b, c;
/*look for any elements with the class "custom-select":*/
x = document.getElementsByClassName("custom-select");
for (i = 0; i < x.length; i++) {
  selElmnt = x[i].getElementsByTagName("select")[0];
  /*for each element, create a new DIV that will act as the selected item:*/
  a = document.createElement("DIV");
  a.setAttribute("class", "select-selected");
  a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
  x[i].appendChild(a);
  /*for each element, create a new DIV that will contain the option list:*/
  b = document.createElement("DIV");
  b.setAttribute("class", "select-items select-hide");
  for (j = 1; j < selElmnt.length; j++) {
    /*for each option in the original select element,
    create a new DIV that will act as an option item:*/
    c = document.createElement("DIV");
    c.innerHTML = selElmnt.options[j].innerHTML;
    c.addEventListener("click", function(e) {
        /*when an item is clicked, update the original select box,
        and the selected item:*/
        var y, i, k, s, h;
        s = this.parentNode.parentNode.getElementsByTagName("select")[0];
        h = this.parentNode.previousSibling;
        for (i = 0; i < s.length; i++) {
          if (s.options[i].innerHTML == this.innerHTML) {
            s.selectedIndex = i;
            h.innerHTML = this.innerHTML;
            y = this.parentNode.getElementsByClassName("same-as-selected");
            for (k = 0; k < y.length; k++) {
              y[k].removeAttribute("class");
            }
            this.setAttribute("class", "same-as-selected");
            break;
          }
        }
        h.click();
    });
    b.appendChild(c);
  }
  x[i].appendChild(b);
  a.addEventListener("click", function(e) {
      /*when the select box is clicked, close any other select boxes,
      and open/close the current select box:*/
      e.stopPropagation();
      closeAllSelect(this);
      this.nextSibling.classList.toggle("select-hide");
      this.classList.toggle("select-arrow-active");
  });
}
function closeAllSelect(elmnt) {
  /*a function that will close all select boxes in the document,
  except the current select box:*/
  var x, y, i, arrNo = [];
  x = document.getElementsByClassName("select-items");
  y = document.getElementsByClassName("select-selected");
  for (i = 0; i < y.length; i++) {
    if (elmnt == y[i]) {
      arrNo.push(i)
    } else {
      y[i].classList.remove("select-arrow-active");
    }
  }
  for (i = 0; i < x.length; i++) {
    if (arrNo.indexOf(i)) {
      x[i].classList.add("select-hide");
    }
  }
}
/*if the user clicks anywhere outside the select box,
then close all select boxes:*/
document.addEventListener("click", closeAllSelect); 
 /*the container must be positioned relative:*/
.custom-select {
  position: relative;
  font-family: monospace;
}
.custom-select select {
  display: none; /*hide original SELECT element:*/
}
.select-selected {
  background-color: DodgerBlue;
}
/*style the arrow inside the select element:*/
.select-selected:after {
  position: absolute;
  content: "";
  top: 14px;
  right: 10px;
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-color: #fff transparent transparent transparent;
}
/*point the arrow upwards when the select box is open (active):*/
.select-selected.select-arrow-active:after {
  border-color: transparent transparent #fff transparent;
  top: 7px;
}
/*style the items (options), including the selected item:*/
.select-items div,.select-selected {
  color: #ffffff;
  padding: 8px 16px;
  border: 1px solid transparent;
  border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
  cursor: pointer;
}
/*style items (options):*/
.select-items {
  position: absolute;
  background-color: DodgerBlue;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 99;
}
/*hide the items when the select box is closed:*/
.select-hide {
  display: none;
}
.select-items div:hover, .same-as-selected {
  background-color: rgba(0, 0, 0, 0.1);
} 
<!--surround the select box within a "custom-select" DIV element.
Remember to set the width:-->
<div class="custom-select" style="width:200px;">
  <select>
   <option value="" selected>Select a Option</option>
   <option value="A">A&nbsp;&nbsp;&nbsp;&nbsp;- TEST A</option>
   <option value="AB">AB&nbsp;&nbsp;&nbsp;- TEST AB</option>
   <option value="ABC">ABC&nbsp;&nbsp;- TEST ABC</option>
   <option value="ABCD">ABCD&nbsp;- TEST ABCD</option>
   <option value="A">A&nbsp;&nbsp;&nbsp;&nbsp;- TEST A</option>
   <option value="AB">AB&nbsp;&nbsp;&nbsp;- TEST AB</option>
   <option value="ABC">ABC&nbsp;&nbsp;- TEST ABC</option>
   <option value="ABCD">ABCD&nbsp;- TEST ABCD</option>
  </select>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML 选择选项文本等宽 的相关文章

  • CSS 双边框,外边框比内边框粗

    在我目前的工作中 我需要在容器上生成双边框 边框样式 双 实现这一点 但是我的客户希望外边框更厚 内边框具有正常厚度 除了创建 2 个 div 其中 1 个嵌套在另一个 div 中 外部 div 具有更大的厚度 或者通过使用边框图像 还有什
  • 如何设置 jQuery 可拖动的最小/最大左和最小/最大右

    我复制了一份JSbin来练习 JSbin链接在这里 https jsbin com gififikisa edit html css js output 实际站点链接在这里 http 79 170 40 181 emory com Proj
  • AngularJS 选择元素设置所选索引

    所以我使用的是 Angular 这是我选择的 html
  • 从 HTML 表单发送数据到 Node.js 服务器

    我正在学习 Node js 我的服务器中有这个 var http require http var url require url http createServer function request response response w
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • Vue js按钮冻结dom

    我试图在按下按钮时切换包含加载动画的跨度 直到使用 v if 函数完成 但是当我按下按钮时 DOM 冻结并且 span 元素保持不变 直到函数调用结束 如何让 DOM 不冻结并显示加载图标 非阻塞按钮按下可能是一个解决方案 HTML
  • 是否可以使用纯 css 禁用 mat-tab 动画

    我想禁用 Angular Material mat tab 动画 内容滑入到位时发生的动画 我知道可以使用 disabled 属性 但我想知道是否可以使用纯 css 达到相同的效果 EDIT 我们的用户体验团队希望从材质选项卡中删除幻灯片动
  • HTML 文件上传“未选择文件”文本样式

    我正在构建一个需要文件上传的 html 表单 当我让文件上传部分正常工作时 我无法获得表单上传按钮和 未选择文件 文本的样式 我想要的标记是 有办法做到吗 PS 请忽略绿色文本 上传屏幕截图 我有那个工作 当前行为按钮和 未选择文件 位于同
  • 如何从 Firefox 中的选择元素中删除箭头

    我正在尝试设计一个select使用 CSS3 的元素 我在 WebKit Chrome Safari 中得到了我想要的结果 但 Firefox 的表现不佳 我什至不关心 IE 我正在使用 CSS3appearance属性 但由于某种原因我无
  • 清除 CSS 过渡

    我使用 CSS 框架 该框架在将鼠标移动到输入元素上时应用过渡 我有一堂课 我不想有这种转变 这可能吗 只需放置过渡 无 在CSS中并使其优先级高于其他 Example html div class a div div class a b
  • 如何防止在达到一定字符数后向文本区域输入内容?

    使用下面的代码 任何超过指定最大值的输入都将被删除 但这会产生一种效果 即键入字符后立即将其删除 我宁愿简单地阻止输入字符
  • 将一个 div 放置在另一个 div 的底部

    我有外部 div 和内部 div 我需要将内部 div 放在外部 div 的底部 外层div是有弹性的 例如宽度 70 我还需要将内部块居中 所述化妆的简单模型如下图所示 已在 Firefox 3 Chrome 1 和 IE 6 7 和 8
  • 通过电子邮件发送在 HTML5 画布上创建的图像

    我有一个画布 用户可以通过交互来更改设计 现在 用户完成更改后 可以提交他的设计及其电子邮件 ID 但为了提交设计 我使用以下方法将画布转换为图像http www nihilogic dk labs canvas2image http ww
  • IE8 底部:0 在位置:绝对的行为类似于位置:固定

    我有一个 DIV 必须始终位于页面的底部 左侧 类似于页脚菜单 div bottom menu position absolute z index 1 left 0 bottom 0 width 90 我的页面定义了最小高度 当用户将其缩小
  • 使图像宽度为父 div 的 100%,但不大于其自身宽度

    我试图让图像 动态放置 对尺寸没有限制 与其父 div 一样宽 但前提是该宽度不比 100 时其自身宽度宽 我已经尝试过这个 但没有成功 img width 100 height auto max width 100 其中许多图像比它们的父
  • Django 1.7:如何使用 html/css 文件作为模板发送电子邮件

    从 Django 1 7 开始 可以send email 使用新参数 html message 不幸的是 没有关于如何使用它的全面指南 新手友好 或者至少我找不到它 我需要使发送的电子邮件变得漂亮 因此 我试图弄清楚如何将我的消息包含到 h
  • html输入数字,min + step,使step忽略min?

    是否有可能使step忽略min属性
  • 如何在 Bootstrap 4 轮播中堆叠多个图像

    我不知道如何使用 Bootstrap 4 以及如何在一张幻灯片中显示多个小图像 例如缩略图 而不是让图像填充轮播的宽度 我已经使用下面的代码尝试了一些操作 但仍然无法堆叠很多图像 div class container h2 class t
  • Javascript 替换为正则表达式无法正常工作

    我正在尝试使用正则表达式验证名称 正则表达式阻止用户连续输入 2 个空格或点 这是我的代码 function test input var regex A Za z 0 1 s 0 1 input value input value rep
  • Ie11 不应用媒体查询样式

    IE11 忽略我的媒体查询并始终使用移动 CSS 奇怪的是 如果我改变浏览器宽度 即使只是 1 2 像素 浏览器也会自行渲染并显示媒体查询 我尝试了 css lint 我的 css 中没有错误 我的CSS没有什么特别的 只是简单的 css

随机推荐

  • tmux:挂起并且不加载,并且不响应任何选项命令

    我已经在 Fedora 的本地空间上从源代码安装了 tmux 到目前为止 它运行良好 但突然无法再运行它 当运行 tmux 时 它就停止了 尝试了不同的命令选项 例如 ls sessions 但没有任何效果 杀死我的用户的所有进程 删除 t
  • maven 编译无法识别我的本地存储库依赖项

    我有一个本地 jar 文件要导入到我的文件夹中 并且我已经运行了 mvn install mvn install install file Dfile C myapp Development core target api core 1 0
  • 如何在启动 iex 会话时执行一些命令?

    假设我想在项目的根路径中启动 iex 时实现一些命令 例如 Logger configure level info require Ecto Query alias MyApp User and so on 我想在每次启动 iex 时自动执
  • SimpUserRegistry 不包含任何会话对象

    我是 Websockets 新手 我一直在尝试使用 SimpUserRegistry 来查找主体的会话对象 我编写了一个自定义握手处理程序 将匿名用户转换为经过身份验证的用户 并且我能够从 Websocket 会话对象访问主体名称 自定义握
  • EWS:日历共享邀请和扩展属性

    好的 到目前为止 我获得的有关该主题的最佳信息是在这个线程上 EWS API 创建日历并与审阅者共享权限 https stackoverflow com questions 7503613 ews api create calendar a
  • PHP + PDF,如何使用curl保存下载的PDF?

    Welcome 我在页面上保存下载的 pdf 时遇到了一些问题 要下载 pdf 我使用 Curl CurlConnect curl init curl setopt CurlConnect CURLOPT URL http website
  • PHP内存限制锁定为256MB?

    我试图将内存限制设置为 512M 但它被锁定为 256M ini set memory limit 512M ini get memory limit gt Returns 256M 我可以完全控制我的服务器 这是专用的 请注意 512M
  • REST WebAPI 接口作为 API 调用中的参数

    我正在使用 ASP NET WebAPI 构建 REST API 一切工作正常 但后来我想到了在所有方法调用中使用接口的好主意 更改所有方法后 我注意到将控制器方法中的参数设置为接口后 我的 API 调用不起作用 我正在使用 OWIN Se
  • 访问类中的会话变量

    当需要检索或保留会话值时 在类构造函数上使用 session start 是否被认为是正常的 最佳实践 除非从 construct 调用 session start 否则无法从类中检索会话变量 session start if isset
  • 在Google云平台上使用FFMPEG

    我将音频文件存储在 Google Cloud Storage 上 通过 Firebase 存储 我需要使用 FFMPEG 将音频文件从立体声 两个通道 转换为单声道 一个通道 如何在 Google Cloud Platform 上进行上述转
  • java.io.IOException:不支持标记/重置

    我知道这个问题已经被问过很多次了 但在某些情况下有所不同 所以我无法弄清楚 当我在 Eclipse 中运行游戏时 一切都很顺利 游戏运行完美 但在导出后 它崩溃了 我可以打开游戏并在菜单中移动 但没有播放任何声音 并且在我点击播放后 游戏就
  • 查找数组中第一个非零值索引

    我有一个数组数组 0 0 0 0 3 2 5 6 15 9 0 0 7 23 我可以用类似的东西 indexOf 0 如果我想找到第一个零值索引 但是如何找到第一个非零值的索引或符合某些条件的索引 它可能看起来像 indexOf funct
  • 从 contentViewController 中解除 UIPopoverController?

    如果您想关闭弹出窗口 例如 从弹出窗口的 contentViewController 中的按钮 您必须 创建对弹出窗口的引用 该引用由创建它的视图控制器保存 从 contentViewController 创建一个通知 让所属视图控制器知道
  • 在 VB.net 中将竖线分隔文件更改为逗号分隔

    所以我有一组管道分隔的输入 如下所示 787291 3224325523 37826427 37826427 2482472 2482472 46284729 46246 24682 82524 6846419 68247 我使用下面给出的
  • 干扰器 helloworld 示例

    我想学习颠覆者框架 http code google com p disruptor 谁能给我一个用Java语言在main方法中运行的helloworld例子 这是一个简单的 可运行的示例 说明如何使用 Disruptor 库 示例是使用
  • 卸载 oh-my-zsh 时遇到问题?

    我在 OSX 上 想要切换回原来的 zsh 配置哦我的zsh http github com robbyrussell oh my zsh 但是当我运行uninstall脚本它给了我一个错误 sudo uninstall oh my zsh
  • dxDataGrid - 如何刷新小部件

    当我单击按钮时 刷新不起作用 如果目的是添加到数据库按钮 请按按钮进入屏幕 但就是不更新 我用ajax创建了一个数据网格 我也在ViewModel中写了刷新功能 不刷新可能是什么原因 我的数据是json ajax type GET url
  • 如何使用python中的lambda函数在通过S3连接的AWS athena中进行查询

    我将 csv 文件保存在 S3 存储桶中 我可以使用AWS Athena查询S3的数据 有什么方法可以将 lambda 函数连接到 athena 并从 lambda 函数查询数据 请帮忙 Thanks 正如 Chris Pollard 所说
  • 如何捕捉Tk中的最大化信号?

    您可以通过以下方式将命令与窗口的 X 按钮绑定 wm protocol windowPath WM DELETE WINDOW command 如何对窗口的最大化按钮执行相同的操作 X11 中也没有标准协议ICCCM套 http tronc
  • HTML 选择选项文本等宽

    我正在尝试选择使用等宽字体的选项 以便当您单击下拉菜单时它们会垂直排列 我试图将代码左对齐 后跟破折号 然后是描述 我使用编码空格添加了选项 以便每个选项在破折号之前具有相同数量的字符 但它们仍然没有对齐 我尝试了新的快递和等宽字体 我可以