Apenas um teste que está funcionando bem.
#parent{
width: 100%;
height: 100%;
overflow: hidden;
}
#child{
width: 100%;
height: 100%;
overflow-y: scroll;
padding-right: 17px; /* Increase/decrease this value for cross-browser compatibility */
box-sizing: content-box; /* So the width will be 100% + 17px */
}
Violino de trabalho
JavaScript:
Como a largura da barra de rolagem difere em diferentes navegadores, é melhor lidar com isso com JavaScript. Se o fizer Element.offsetWidth - Element.clientWidth
, a largura exata da barra de rolagem será exibida.
JavaScript Working Fiddle
Ou
Usando Position: absolute
,
#parent{
width: 100%;
height: 100%;
overflow: hidden;
position: relative;
}
#child{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: -17px; /* Increase/Decrease this value for cross-browser compatibility */
overflow-y: scroll;
}
Violino de trabalho
JavaScript Working Fiddle
Em formação:
Com base nesta resposta, criei um plugin de rolagem simples .
!important
então removibox-sizing: border-box; width: calc(100% + 50px);
e o mesmo valor para preenchimento. Nenhum navegador tem 50px barra de rolagem largura / altura, por isso deve simplesmente cobri-los todos ...É fácil no WebKit, com estilo opcional:
fonte
cordova
aplicativo, funcionou bem. teve que aplicaroverflow:scroll
ao elemento.-webkit-overflow-scrolling: touch
Isso funciona para mim com propriedades simples de CSS:
Para versões mais antigas do Firefox, use:
overflow: -moz-scrollbars-none;
fonte
overflow: -moz-scrollbars-none
oculta as barras de rolagem no Firebox, mas também desativa a rolagem. Você pode fornecer uma demonstração em que isso está funcionando para você?-moz-scrollbars-none
propriedade é excluída para as versões mais recentes do Firefox: developer.mozilla.org/en-US/docs/Web/CSS/overflow-webkit-overflow-scrolling: touch
-moz-scrollbars-none
você pode usar@-moz-document url-prefix() { .container { overflow: hidden; } }
. Consulte stackoverflow.com/questions/952861/… .ATUALIZAR:
O Firefox agora suporta ocultar barras de rolagem com CSS, para que todos os principais navegadores estejam cobertos (Chrome, Firefox, Internet Explorer, Safari etc.).
Basta aplicar o seguinte CSS ao elemento do qual você deseja remover as barras de rolagem:
Esta é a solução menos hacker entre navegadores que eu conheço atualmente. Confira a demonstração.
RESPOSTA ORIGINAL:
Aqui está outra maneira que ainda não foi mencionada. É realmente simples e envolve apenas duas divs e CSS. Nenhum JavaScript ou CSS proprietário é necessário e funciona em todos os navegadores. Também não é necessário definir explicitamente a largura do contêiner, tornando-o fluido.
Esse método usa uma margem negativa para mover a barra de rolagem para fora do pai e, em seguida, a mesma quantidade de preenchimento para empurrar o conteúdo de volta à sua posição original. A técnica funciona para rolagem vertical, horizontal e bidirecional.
Demonstrações:
Código de exemplo para a versão vertical:
HTML:
CSS:
fonte
Usar:
Este é um truque para sobrepor um pouco a barra de rolagem a uma div sobreposta que não possui nenhuma barra de rolagem:
Isso é apenas para navegadores WebKit ... Ou você pode usar conteúdo CSS específico do navegador (se houver algum no futuro). Todo navegador pode ter uma propriedade diferente e específica para suas respectivas barras.
Para o Microsoft Edge, use:
-ms-overflow-style: -ms-autohiding-scrollbar;
ou-ms-overflow-style: none;
conforme o MSDN .Não há equivalente para o Firefox. Embora exista um plugin jQuery para isso, http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html
fonte
::-webkit-scrollbar { display: none; } .ui-content { -webkit-overflow-scrolling: touch; }
// jQuery Mobile onMobileInit ()$.mobile.touchOverflowEnabled = true;
Esta resposta não inclui o código, então aqui está a solução da página :
De acordo com a página, essa abordagem não precisa saber a largura da barra de rolagem antes do tempo para funcionar e a solução funciona para todos os navegadores também, e pode ser vista aqui .
O bom é que você não é forçado a usar diferenças de preenchimento ou largura para ocultar a barra de rolagem.
Esse zoom também é seguro. As soluções de preenchimento / largura mostram a barra de rolagem quando ampliada ao mínimo.
Correção do Firefox: http://jsbin.com/mugiqoveko/1/edit?output
fonte
::-webkit-scrollbar {}
padding-right: 150px;
corrige isso. Testado em FF, Chrome, Safari e Edge. Funciona também em baixos níveis de zoom devido ao grande preenchimento à direita.html { -ms-overflow-style: none;}
. Nesses navegadores, não há necessidade de usar padding-hack.overflow-y: scroll
obter o comportamento de rolagem, mas oculto (como o Chrome) para fazê-lo funcionar no Edge23.Basta seguir as três linhas a seguir e seu problema será resolvido:
Onde liaddshapes é o nome da div em que o scroll está chegando.
fonte
Isso funciona para mim em vários navegadores. No entanto, isso não oculta barras de rolagem nativas em navegadores móveis.
No SCSS
Em CSS
fonte
{}
significam blocos aninhados ( )? Como é que deve ser interpretado? E o&
? Talvez elaborado em sua resposta?&::-webkit-scrollbar
torna-se.hide-native-scrollbar::-webkit-scrollbar { }
em CSS{ width: 0; height: 0;}
para :: - webkit-scrollbar em vez dedisplay: none
para iOS.O seguinte estava trabalhando para mim no Microsoft, Chrome e Mozilla para um elemento div específico:
fonte
scrollbar-width
(FF apenas) é sinalizado como "experimental"HTML:
CSS:
Aplique CSS de acordo.
Verifique aqui (testado no Internet Explorer e Firefox).
fonte
A partir de 11 de dezembro de 2018 (Firefox 64 e superior), a resposta a essa pergunta é muito simples, pois o Firefox 64+ agora implementa a especificação CSS Scrollbar Styling .
Basta usar o seguinte CSS:
Link da nota de versão do Firefox 64 aqui .
fonte
Usar:
CSS
HTML
fonte
Usar
Chame essas funções para qualquer ponto que você queira carregar, descarregar ou recarregar as barras de rolagem. Ele ainda pode ser rolado no Chrome quando o testei no Chrome, mas não tenho certeza dos outros navegadores.
fonte
Isso funciona para mim:
fonte
Nos navegadores modernos, você pode usar
wheel event
:fonte
overflow: hidden
e esse código para quemat-card-content
(no angular 5, é claro) seja rolável e isso resolveu meu problema. Nota: Eu useie.deltaY
como meustep
e funcionou como rolagem normal, então acho que para rolagem normal, mas com a barra de rolagem oculta, essa é a melhor correspondência.Meu problema: não quero nenhum estilo no meu conteúdo HTML. Quero que meu corpo seja rolado diretamente sem nenhuma barra de rolagem e apenas uma rolagem vertical, trabalhando com grades CSS para qualquer tamanho de tela.
O valor do tamanho da caixa afeta as soluções de preenchimento ou margem, elas funcionam com o tamanho da caixa: caixa de conteúdo .
Eu ainda preciso da diretiva "-moz-scrollbars-none" e, como gdoron e Mr_Green, tive que ocultar a barra de rolagem. Eu tentei
-moz-transform
e-moz-padding-start
, impactar apenas o Firefox, mas houve efeitos colaterais responsivos que precisavam de muito trabalho.Esta solução funciona para o conteúdo do corpo HTML com o estilo "display: grid" e é responsiva.
fonte
Adicionar preenchimento a um interior
div
, como na resposta atualmente aceita, não funcionará se, por algum motivo, você desejar usarbox-model: border-box
.O que funciona nos dois casos é aumentar a largura do interior
div
para 100% mais a largura da barra de rolagem (assumindooverflow: hidden
a div externa).Por exemplo, em CSS:
Em JavaScript, entre navegadores:
fonte
É assim que faço para rolagem horizontal; apenas CSS e funciona bem com estruturas como o Bootstrap / col- *. Ele precisa apenas de dois
div
s extras e o pai com umwidth
oumax-width
conjunto:Você pode selecionar o texto para fazer rolagem ou rolagem com os dedos, se tiver uma tela sensível ao toque.
Versão curta para pessoas preguiçosas:
fonte
margin-bottom
para ser,padding-bottom
mas com o mesmo valor. Isso não será consumido abaixo do espaço do elemento na parte inferior. Evita a sobreposição.margin-bottom
é negativo, eu acho que não pode ser alterado para umpadding-bottom
, que não pode lidar com valores negativosO seguinte estilo SASS deve tornar sua barra de rolagem transparente na maioria dos navegadores (o Firefox não é suportado):
fonte
Por acaso, tentei as soluções acima em meu projeto e, por algum motivo, não consegui ocultar a barra de rolagem devido ao posicionamento da div. Por isso, decidi ocultar a barra de rolagem introduzindo uma div que a cobre superficialmente. O exemplo abaixo é para uma barra de rolagem horizontal:
CSS correspondente é o seguinte:
fonte
Isso estará no corpo:
E este é o CSS:
fonte
Esta é uma solução de estilo divítico que, no entanto, deve funcionar para todos os navegadores ...
A marcação é a seguinte e precisa estar dentro de algo com posicionamento relativo (e sua largura deve ser definida, por exemplo, 400 pixels):
O CSS:
fonte
O
perfect-scrollbar
plugin parece ser o caminho a seguir, consulte: https://github.com/noraesae/perfect-scrollbarÉ uma solução completa e bem documentada e baseada em JavaScript para o problema das barras de rolagem.
Página de demonstração: http://noraesae.github.io/perfect-scrollbar/
fonte
Você pode usar o código abaixo para ocultar a barra de rolagem, mas ainda sendo capaz de rolar:
fonte
Para ocultar barras de rolagem para elementos com conteúdo excedente, use.
fonte
Outro tipo de abordagem hacky é fazer
overflow-y: hidden
e, em seguida, rolar manualmente o elemento com algo como isto:Há um ótimo artigo sobre como detectar e lidar com
onmousewheel
eventos no blog do deepmikoto . Isso pode funcionar para você, mas definitivamente não é uma solução elegante.fonte
Eu só queria compartilhar um snippet combinado para ocultar a barra de rolagem que eu uso no desenvolvimento. É uma coleção de vários trechos encontrados na Internet que funciona para mim:
fonte
Outro simples violino de trabalho :
Estouro oculto no contêiner pai e transbordamento automático no contêiner filho. Simples.
fonte
Esta solução complicada funciona mesmo no antigo navegador IE
É uma solução alternativa para a [ barra de rolagem vertical ]
Apenas tente: jsfiddle
fonte
Basta definir a largura da largura da criança para 100%, preenchimento para 15 pixels,
overflow-x
para rolar eoverflow:hidden
para o pai e para a largura desejada.Funciona perfeitamente em todos os principais navegadores, incluindo o Internet Explorer e Edge, com exceção do Internet Explorer 8 e inferior.
fonte