Suponha que você tenha algum estilo e a marcação:
ul
{
white-space: nowrap;
overflow-x: visible;
overflow-y: hidden;
/* added width so it would work in the snippet */
width: 100px;
}
li
{
display: inline-block;
}
<div>
<ul>
<li>1</li> <li>2</li> <li>3</li>
<li>4</li> <li>5</li> <li>6</li>
<li>7</li> <li>8</li> <li>9</li>
<li>1</li> <li>2</li> <li>3</li>
<li>4</li> <li>5</li> <li>6</li>
<li>7</li> <li>8</li> <li>9</li>
<li>1</li> <li>2</li> <li>3</li>
<li>4</li> <li>5</li> <li>6</li>
<li>7</li> <li>8</li> <li>9</li>
</ul>
</div>
Quando você vê isso. O <ul>
possui uma barra de rolagem na parte inferior, embora eu tenha especificado valores visíveis e ocultos para o estouro x / y.
(observado no Chrome 11 e ópera (?))
Eu estou supondo que deve haver alguma especificação do w3c ou algo dizendo isso para acontecer, mas para a minha vida eu não consigo entender o porquê.
UPDATE: - Encontrei uma maneira de obter o mesmo resultado adicionando outro elemento ao redor do ul
. Confira.
overflow-x hidden;
ele remove o pergaminho, mas como eu preciso dos elementos li para ocultar a borda na parte inferior, para que ele tenha o efeito tracejado desejado. Não entendo por queoverflow-x: visible
cria uma barra de rolagem. Não deveria afaik.overflow: hidden;
e em um filho inserido ao redor do<ul>
seroverflow: visible
.Respostas:
Depois de uma pesquisa séria, parece que encontrei a resposta para minha pergunta:
from: http://www.brunildo.org/test/Overflowxy2.html
também a especificação do W3C diz:
Versão curta:
Se você estiver usando
visible
para umoverflow-x
ouoverflow-y
outro algo que não sejavisible
para o outro, ovisible
valor será interpretado comoauto
.fonte
overflow-x:visible
duranteoverflow-y:hidden
um hack pai / filho? Beliche bonito, IMO.overflow-y: visible
. Boo CSS!outro truque barato, que parece fazer o truque:
style="padding-bottom: 250px; margin-bottom: -250px;"
no elemento em que o estouro vertical está sendo cortado,250
representando quantos pixels você precisa para o menu suspenso etc.fonte
position: relative
ou o uso de wrappers não era possível, essa era a única solução que funcionava, embora também exigisse a adição de muitas margens feias aos elementos filho dentro do elemento que eu queria definiroverflow-x: hidden
para compensar o hacky preenchimento. Isso me salvou, no entanto, obrigado!Originalmente, encontrei uma maneira CSS de contornar isso ao usar o plug-in Cycle jQuery. Ciclo usa JavaScript para definir meu slide como
overflow: hidden
, portanto, ao definir minhas fotos comwidth: 100%
aparência de corte vertical, forço-as a ficarem visíveis!important
e evitar mostrar a animação do slide fora da caixa que definioverflow: hidden
para a div contêiner do deslizar. Espero que funcione para você.UPDATE - Nova solução:
Problema original -> http://jsfiddle.net/xMddf/1/ (Mesmo se eu o usar,
overflow-y: visible
ele se tornará "automático" e, na verdade, "rolar").A nova solução -> http://jsfiddle.net/xMddf/2/ (Encontrei uma solução alternativa usando uma div wrapper para aplicar
overflow-x
eoverflow-y
a diferentes elementos DOM, como James Khoury aconselhou sobre o problema de combinarvisible
ehidden
um único elemento DOM).fonte
overflow-x:visible;
eoverflow-y:hidden
. Não o contrário.overflow-x
e-y
: violino atualizados .Eu me deparei com esse problema ao tentar criar uma barra lateral posicionada fixa com conteúdo rolável verticalmente e filhos posicionados absolutos aninhados para serem exibidos fora dos limites da barra lateral .
Minha abordagem consistiu em aplicar separadamente:
overflow: visible
propriedade para o elemento da barra lateraloverflow-y: auto
propriedade para o wrapper interno da barra lateralPor favor, verifique o exemplo abaixo ou um código de acesso online .
fonte
auto
vez dehidden
.position
Usei a
content+wrapper
abordagem ... mas fiz algo diferente do mencionado até agora: verifiquei se os limites do meu wrapper NÃO estavam alinhados com os limites do conteúdo na direção em que eu queria estar visível .Nota importante: Foi fácil o suficiente para obter a
content+wrapper, same-bounds
abordagem ao trabalho em um navegador ou outra, dependendo de várias combinações CSSposition
,overflow-*
etc ... mas eu nunca poderia usar essa abordagem para obtê-los todos correto (Edge, Chrome, Safari,. ..)Mas quando eu tinha algo como:
... todos os navegadores estavam felizes.
fonte
Agora existe uma nova maneira de resolver esse problema - se você remover a posição: relativa do contêiner que precisa ter o estouro-y visível, você poderá ter o estouro-y visível e o estouro-x oculto e vice-versa (ter o estouro- x visível e excedente-y oculto, apenas verifique se o contêiner com a propriedade visible não está relativamente posicionado).
Veja esta postagem do CSS Tricks para obter mais detalhes - funcionou para mim: https://css-tricks.com/popping-hidden-overflow/
fonte