A altura e a largura não se aplicam à extensão?


254

Pergunta noob total, mas aqui.

CSS

.product__specfield_8_arrow {

    /*background-image:url(../../upload/orng_bg_arrow.png);
    background-repeat:no-repeat;*/
    background-color:#fc0;
    width:50px !important;
    height:33px !important;
    border: 1px solid #dddddd;
    border-left:none;
    border-radius:5px;
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    border-bottom-left-radius:0px;
    border-top-left-radius:0px;
    -moz-border-radius-bottomleft:0px;
    -moz-border-radius-topleft:0px;
    -webkit-border-bottom-left-radius:0px;
    -webkit-border-top-left-radius:0px;
    margin:0;
    padding:2px;
    cursor:pointer;
}​​​

HTML

<span class="product__specfield_8_arrow">&nbsp;</span>

Violino

Basicamente, estou tentando emular um botão, fazer um intervalo (ou algo assim) parecer um botão ao lado de um campo de entrada que realmente não precisa ser um por causa de um gerador de preenchimento automático que gera erros no Enter. Pensei que isso seria uma solução rápida por enquanto, mas obviamente não.

Obrigado.


2
Você também pode querer conferir stackoverflow.com/questions/2343989/…
Edan Maor

2
Verifique também o padrão, especificamente w3.org/TR/CSS2/visudet.html#the-width-property e w3.org/TR/CSS2/visudet.html#the-height-property , que declara as propriedades "Aplica-se a: todos os elementos, exceto elementos inline não substituídos, linhas da tabela e grupos de linhas "
out

Respostas:


426

Span é um elemento embutido. Não tem largura ou altura.

Você pode transformá-lo em um elemento no nível do bloco, e ele aceitará suas diretrizes de dimensão.

span.product__specfield_8_arrow
{
    display: inline-block; /* or block */
}

9
Obrigado, consertou. Eu tentei exibir: bloquear antes, mas o bloco embutido corrigiu.
Kyle

21
Esse é o problema. Se display: blockfor especificado, o span deixará de ser um elemento embutido e um elemento depois que ele aparecer na próxima linha. Preciso de um elemento em linha, mas que possa ter a largura desejada.
Paul

6
uma solução melhor é a visualização do utilizador: inline-bloco
Anant

37

Tente usar uma divvez do spanou usando o CSS display: block;ou display: inline-block;- spané, por padrão um elemento inline que não pode tomar widthe heightpropriedades.


9
uma div não é um substituto semântico para um período. Uma extensão é um contêiner de texto enquanto uma div é um contêiner de layout. A aplicação de um estilo de bloco embutido, como sugerido pela Developer Art, é a resposta correta.
Brian Scott

3
A pergunta não fornece contexto para indicar que uma div é inerentemente inadequada semanticamente.
Isaac

1
Na verdade, ao ler a marcação da operação, parece que o elemento em questão está sendo usado para simplesmente exibir uma imagem de plano de fundo. Nesse caso, uma div seria realmente mais apropriada. -1 removido do comentário original de Isaac.
Brian Scott

Além disso, eu tentei usar um div antes de mudar para extensão, ele sempre exibe sob o div anterior .. Então fui com Span :)
Kyle

22

Inspirado no @Hamed, adicionei o seguinte e funcionou para mim:

display: inline-block; overflow: hidden; 

11

A extensão ocupa largura e altura somente quando o fazemos bloquear o elemento.

span {display:block;}

14
Eu acho que display: inline-block;é melhor
151.291

Dessa maneira, você mudará para todos os períodos, eu recomendaria o uso de uma classe.
Hola Soy Edu Feliz Navidad

9

De acordo com o comentário de @Paul, se o bloco display: for especificado, o span deixará de ser um elemento inline e um elemento depois que ele aparecer na próxima linha.

Eu vim aqui para encontrar solução para o meu problema de altura do vão e eu tenho uma solução própria

Adicionando overflow:hidden;e keeing-lo em linha vai resolver o problema apenas testado no modo IE8 Quirks


Eu continuo vendo overflow:hidden;neste contexto. "O conteúdo é cortado, sem barras de rolagem", diz MDN . Parece contra-intuitivo. O que faz aqui?
Bob Stein

8

spanPor padrão, os s são exibidos em linha, o que significa que eles não têm altura e largura.

Tente adicionar um display: blockao seu período.


6

O período começa como um elemento embutido. Você pode alterar seu atributo de exibição para bloquear, por exemplo, e seus atributos de altura / largura começarão a ter efeito.


2

span {display:block;} também adiciona uma quebra de linha.

Para evitar isso, use span {display:inline-block;}e, em seguida, você pode adicionar largura e altura ao elemento embutido e também pode alinhá-lo dentro do bloco:

span {
        display:inline-block;
        width: 5em;
        font-weight: normal;
        text-align: center
     }

mais aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.