编辑输入类型="搜索"伪元素按钮('x')

use*_*952 29 css search webkit input pseudo-element

我正在尝试制作一个看起来不错的搜索栏.我做的是,我做了一个搜索栏的图像,我将图像添加到输入的背景,我正在编辑字体将出现的位置和大小.我找不到编辑方式的唯一方法是当我使用输入类型搜索时出现的小'x'按钮.我想稍稍向左移动,以便修复我的搜索栏图像.

这是我的HTML:

<input id="search" name="Search" type="search" value="Search" />
Run Code Online (Sandbox Code Playgroud)

这是我的CSS:

#search{
    width: 480px;
    height: 49px;
    border: 3px solid black;
    padding: 1px 0 0 48px;
    font-size: 22px;
    color: blue;
    background-image: url('images/search.jpg');
    background-repeat: no-repeat;
    background-position: center;
    outline: 0;
}
Run Code Online (Sandbox Code Playgroud)

Unc*_*ror 78

对于发现自己在这里(就像我一样)思考“我如何检查此元素以应用自定义样式? ”的任何人,您需要启用用户代理影子 DOM以使这些供应商元素可访问。

对于WebKit (Safari) 和Blink(Chrome、Edge、Opera、Brave)浏览器,请按照以下步骤操作:

  1. 打开开发者工具 ( Ctrl+Shift+I )
  2. 找到右上角的齿轮图标,然后单击以打开下拉菜单
  3. 在打开的上下文菜单中,在“首选项”下,在底部找到“元素”并启用“显示用户代理影子 DOM

在此处输入图片说明 正如你所看到的,我是一个有文化的人,如果有一个黑暗的主题,我就用它

在此处输入图片说明

  • @JoshHabdas 不是,但它很有帮助。当我必须处理像OP的问题这样的问题时,我学到了一些新东西。 (29认同)
  • 这不是所提问题的答案。 (2认同)

Yur*_*ter 45

假设您正在谈论仅在Webkit浏览器中出现的"取消搜索"[X]图标(Chrome,Safari,Opera),您可以使用-webkit-search-cancel-button伪元素.例如:

#Search::-webkit-search-cancel-button{
    position:relative;
    right:20px;    
}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/5XKrc/1/

使用这种方法,您甚至可以创建自己的取消按钮,例如此样式:

#Search::-webkit-search-cancel-button{
    position:relative;
    right:20px;  

    -webkit-appearance: none;
    height: 20px;
    width: 20px;
    border-radius:10px;
    background: red;
}
Run Code Online (Sandbox Code Playgroud)

而不是[X]将创建一个红色圆圈.

演示http://jsfiddle.net/5XKrc/3/

对于IE10及更高版本,您可以使用以下按钮移动按钮:

#Search::-ms-clear{
   margin-right:20px
}
Run Code Online (Sandbox Code Playgroud)

哦,并且确实使用placeholder="Search"而不是value="Search"- 当输入为空时它会显示"搜索"字样 - 当用户输入内容时它会自动删除它.

  • 如何改变十字的颜色 (2认同)

Jam*_*son 24

2020 跨浏览器一致方法

这是清除搜索“x”按钮的跨浏览器实现,它使用来自 FontAwesome 的实心时间圆 SVG 作为图标,适用于深色和浅色背景。它还标准化了 Safari 以采用 Chrome 实现,以仅在表单字段具有焦点时显示图标。

input[type="search"] {
  border: 1px solid gray;
  padding: .2em .4em;
  border-radius: .2em;
}

input[type="search"].dark {
  background: #222;
  color: #fff;
}

input[type="search"].light {
  background: #fff;
  color: #222;
}

input[type="search"]::-webkit-search-cancel-button {
  -webkit-appearance: none;
  height: 1em;
  width: 1em;
  border-radius: 50em;
  background: url(https://pro.fontawesome.com/releases/v5.10.0/svgs/solid/times-circle.svg) no-repeat 50% 50%;
  background-size: contain;
  opacity: 0;
  pointer-events: none;
}

input[type="search"]:focus::-webkit-search-cancel-button {
  opacity: .3;
  pointer-events: all;
}

input[type="search"].dark::-webkit-search-cancel-button {
  filter: invert(1);
}
Run Code Online (Sandbox Code Playgroud)
<input type="search" placeholder="search" class="light">
<input type="search" placeholder="search" class="dark">
Run Code Online (Sandbox Code Playgroud)

注意。尽管 Edge 也是基于 webkit 的,并且目前支持对伪类进行一些修改,但::-webkit-search-cancel-button我的发现表明,只要您使用url()css 中的语法设置背景图像,Edge 中的按钮就会消失。因此,上述解决方案目前在 Edge 中不起作用。

  • 我刚刚在 Edge 中运行了代码片段,一切似乎都正常工作 (2认同)

Jos*_*das 10

我想将 [小'x' 图标] 向左移动一点,以便修复我的搜索栏图像。

用户希望 UI 不会移动太多。如果您决定移动“x”图标,请考虑使用伪类并移动您的搜索图标:

在此处输入图片说明 在此处输入图片说明

如果嵌入了搜索图标,您的背景图像将其移动到具有role="presentation"属性的第二个图像中,并立即将其放置input在标记之后:

<input id="search" name="Search" type="search" value="Search" />
<svg role="presentation" class="i-search" viewBox="0 0 32 32" width="14" height="14" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="3">
  <circle cx="14" cy="14" r="12" />
  <path d="M23 23 L30 30" />
</svg>
Run Code Online (Sandbox Code Playgroud)

将其放置在用户期望的位置:

#search + svg {
  margin-left: -30px;
  margin-bottom: -2px;
}
Run Code Online (Sandbox Code Playgroud)

然后使用:placeholder-shown伪类隐藏和显示它:

#search + svg {
  visibility: hidden;
}
#search:placeholder-shown + svg {
  visibility: visible;
}
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您可以设置“x”图标的样式。但你可能不想了。

  • 好的解决方案 imo... 浏览器解决方案的工作花哨(仅在悬停或焦点等时显示,并且在浏览器之间不相同) (2认同)

Air*_*err 6

使用单个 CSS 规则块执行带有dark或背景的简单“X” 。light运行代码片段以查看示例。

/* light backdrops only */
input[type="search"]::-webkit-search-cancel-button {
  -webkit-appearance: none;
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-left: 10px;
  background:
    linear-gradient(45deg, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 43%,#000 45%,#000 55%,rgba(0,0,0,0) 57%,rgba(0,0,0,0) 100%),
    linear-gradient(135deg, transparent 0%,transparent 43%,#000 45%,#000 55%,transparent 57%,transparent 100%);
}

/* dark backdrops only */
input[type="search"][value="dark"]::-webkit-search-cancel-button {
  background:
    linear-gradient(45deg, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 43%,#fff 45%,#fff 55%,rgba(0,0,0,0) 57%,rgba(0,0,0,0) 100%),
    linear-gradient(135deg, transparent 0%,transparent 43%,#fff 45%,#fff 55%,transparent 57%,transparent 100%);
}
Run Code Online (Sandbox Code Playgroud)
<input type="search" value="light">
<input type="search" value="dark" style="background:black; color:white;">
Run Code Online (Sandbox Code Playgroud)

参考:/sf/answers/3649931561/

  • 接得好。编辑我的代码以包含这些要点。 (2认同)

归档时间:

查看次数:

56125 次

最近记录:

6 年 前