Eliminar esquinas redondeadas de un elemento en Chrome / Webkit


La hoja de estilos user-agent para Chrome da un radio de borde de 5px a todas las esquinas de un elemento <select>. He intentado deshacerse de esto mediante la aplicación de un radio de 0px a través de mi hoja de estilos externa, así en línea en el elemento en sí; He intentado tanto border-radius:0px y -webkit-border-radius:0px; y he intentado el aún más específico border-top-left-radius:0px (junto con su equivalente-webkit).

Ninguno está funcionando.

Cuando examino el elemento en las herramientas para desarrolladores de webkit, el Estilo calculado todavía enumera el radius como 5px. Pero si hago clic en la flecha de expansión al lado para ver los detalles, se lee: elemento.estilo - 0px. Y debajo de eso muestra la especificación css externa que di de 0px, junto con la especificación de la hoja de estilos del agente de usuario de 5px. Y los dos últimos están tachados, como deberían estar.

¿Alguna idea?

Author: Wesley Murch, 2011-04-25

14 answers

Esto funciona para mí (estilos de la primera aparición no la lista desplegable):

select {
  -webkit-appearance: none;
  -webkit-border-radius: 0px;
}

Http://jsfiddle.net/fMuPt /

 199
Author: antonj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-25 15:59:19

Solo mi solución con la imagen desplegable (inline svg)

select.form-control {
    -webkit-appearance: none;
    -webkit-border-radius: 0px;
    background-image: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='24' height='24' viewBox='0 0 24 24'><path fill='#444' d='M7.406 7.828l4.594 4.594 4.594-4.594 1.406 1.406-6 6-6-6z'></path></svg>");
    background-position: 100% 50%;
    background-repeat: no-repeat;
}

Alternativa (ya que la anterior no funciona con la última versión de firefox)

select.form-control {
    -webkit-appearance: none;
    -moz-appearance: none;
    -webkit-border-radius: 0px;
    background-image: url("https://image.flaticon.com/icons/svg/60/60781.svg");
    background-position: 99% 50%;
    background-repeat: no-repeat;
    background-size: 16px;
}

Estoy usando bootstrap por eso usé select.form-control
Puedes usar select{ o select.your-custom-class{ en su lugar.

 71
Author: Afzal Hossain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-13 14:03:43

Si quieres bordes cuadrados y aún quieres la pequeña flecha expansor, te recomiendo esto:

select.squarecorners{
     border: 0;
     outline: 1px solid #CCC;
     background-color: white;
}
 27
Author: jordan314,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-12 22:56:13

Mientras que la respuesta superior elimina el borde, también elimina la flecha, lo que hace que sea extremadamente difícil, si no imposible, para el usuario identificar el elemento como una selección.

Mi solución fue simplemente pegar un div blanco (con border-radius:0px) detrás de la selección. Establezca su posición en absoluto, su altura a la altura de la selección, y usted debe ser bueno para ir!

 5
Author: Reed Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-24 09:48:44

Algunas buenas soluciones aquí, pero esta no necesita SVG, conserva el borde a través de outline y lo establece al ras en el botón.

select {
  height: 20px;
  -webkit-border-radius: 0;
  border: 0;
  outline: 1px solid #ccc;
  outline-offset: -1px;
}
<select>
 <option>Apple</option>
 <option>Ball</option>
 <option>Cat</option>
</select>
 4
Author: aleemb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-18 17:16:24

Caja de inserción-sombra hace el truco.

select{
  -webkit-appearance: none;
  box-shadow: inset 0px 0px 0px 4px;
  border-radius: 0px;
  border: none;
  padding:20px 150px 20px 10px;
}

Demo

 1
Author: Marconi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-25 13:56:48

¿Por alguna razón se ve afectado por el color del borde??? Cuando se utiliza el color estándar de las esquinas se mantienen redondeadas, pero si cambia el color aunque sea ligeramente el redondeo desaparece.

select.regularcolor {
    border-color: rgb(169, 169, 169);
}

select.offcolor {
    border-color: rgb(170, 170, 170);
}

Https://jsfiddle.net/hLg70o70/2 /

 0
Author: mcallahan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-19 18:09:02

Bueno, tengo la solución. espero que te pueda ayudar:)

select{
      border-image: url(http://www.w3schools.com/cssref/border.png) 30 stretch;
      width: 120px;
      height: 36px;
      color: #999;
  }
<select>
  <option value="1">Hi</option>
  <option value="2">Bye</option>
</select>
 0
Author: Amit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-25 18:16:27

Se debe evitar eliminar las flechas. Una solución que conserva las flechas desplegables es eliminar primero los estilos del menú desplegable:

.myDropdown {
  background-color: #yourbg;
  border-style: none;
}

Luego crea div directamente antes del menú desplegable en tu HTML:

<div class="myDiv"></div>
<select class="myDropdown...">...</select>

Y el estilo del div como este:

.myDiv {
  background-color: #yourbg;
  border-style: none;
  position: absolute;
  display: inline;
  border: 1px solid #acolor;
}

Display inline evitará que el div vaya a una nueva línea, position absolute lo elimina del flujo de la página. El resultado final es un subrayado limpio y agradable que puede diseñar como desee, y su menú desplegable aún se comporta como el usuario esperaría.

 0
Author: devigner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-10 18:50:47

Una forma de mantenerlo simple y evitar jugar con las flechas y otras características similares es simplemente alojarlo en un div con el mismo color de fondo que la etiqueta select.

 0
Author: Danny Santos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-24 12:34:38

Solución con flecha desplegable a la derecha personalizada, utiliza solo css (sin imágenes)

select {
  -webkit-appearance: none;
  -webkit-border-radius: 0px;
  background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%);
  background-position: calc(100% - 20px) calc(1em + 2px), calc(100% - 15px) calc(1em + 2px), calc(100% - 2.5em) 0.5em;
  background-size: 5px 5px, 5px 5px, 1px 1.5em;
  background-repeat: no-repeat;

  -moz-appearance: none;
  display: block;
  padding: 0.3rem;
  height: 2rem;
  width: 100%;
}
<html>

<body>
  <br/>
  <h4>Example</h4>
  <select>
    <option></option>
    <option>Hello</option>
    <option>World</option>
  </select>
</body>

</html>
 0
Author: Mihai Crăiță,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-05 20:05:49

Usé la solución de jordan314, pero luego agregué la clase "border-light" para seleccionar. Si tiene definida la clase border-light por defecto en css, puede usarla directamente. Simplemente define el borde como blanco). Cambié el borde a cuadrado / eliminar el radio, y mantuve la flecha.

Esto es lo que hice:

<select class="form-control border border-light" id="type">
   <option>Select</option>
   <option value="mobile">Apple</option>
 </select>

Si no tiene la luz de borde predefinida, simplemente agregue su css:

<style>
.border-light{
         border-color:#f8f9fa!important
     }

 #type {
   border:0;
   outline:1px solid #ddd;
   background-color:white;
 }
</style>
 -1
Author: Sitti Munirah Abdul Razak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-16 14:20:59

[1]} Firefox: 18

.squaredcorners {
    -moz-appearance: none;
}
 -8
Author: david forstner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-12 12:18:52

Establecer el CSS como

border-radius:0px !important
-webkit-border-radius:0px !important
border-top-left-radius:0px !important

Intente si funciona.

 -10
Author: AbhiRoczz...,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-25 16:05:33