Quero usar o Twitter Bootstrap, mas apenas em elementos específicos, então preciso descobrir uma maneira de prefixar todas as classes do Twitter Bootstrap com meu prefixo ou usar menos mixins. Não tenho experiência com isso ainda, então não entendo muito bem como fazer isso. Aqui está um exemplo do HTML que estou tentando estilizar:
<div class="normal-styles">
<h1>dont style this with bootstrap</h1>
<div class="bootstrap-styles">
<h1>use bootstrap</h1>
</div>
</div>
Neste exemplo, o Twitter Bootstrap normalizaria ambos os estilos h1
, mas quero ser mais seletivo sobre as áreas em que aplico os estilos do Twitter Bootstrap.
twitter-bootstrap
less
Andrew
fonte
fonte
Respostas:
Isso acabou sendo mais fácil do que eu pensava. Tanto Less quanto Sass suportam namespacing (usando a mesma sintaxe até). Ao incluir bootstrap, você pode fazer isso em um seletor para atribuir um nome a ele:
Atualização: para versões mais recentes do LESS, veja como fazer:
Uma pergunta semelhante foi respondida aqui.
fonte
@import
o Bootstrap original. Tive problemas com modais também, acho que porque o Bootstrap aplica certas classes à tag de corpo de nível superior. Não me lembro se encontrei uma solução. No final, acho que acabei escrevendo minha própria substituição modal.@Andrew ótima resposta. Você também deve notar que o bootstrap modifica o corpo {}, principalmente para adicionar fonte. Então, quando você atribui um namespace via LESS / SASS, seu arquivo css de saída fica assim: (no bootstrap 3)
mas obviamente não haverá uma tag body dentro de sua div, então seu conteúdo bootstrap não terá a fonte bootstrap (já que todo bootstrap herda a fonte do pai)
Para corrigir, a resposta deve ser:
fonte
margin: 0;
Colocando as respostas de @Andrew, @Kevin e @adamj juntas (mais alguns outros estilos), se você incluir o seguinte em um arquivo chamado "bootstrap-namespaced.less", você pode simplesmente importar 'bootstrap-namespaced.less' para qualquer menos Arquivo:
fonte
Adicionar um namespace ao CSS de bootstrap interromperá a funcionalidade modal, pois o bootstrap adiciona uma classe de 'pano de fundo modal' diretamente ao corpo. Uma solução alternativa é mover este elemento após abrir o modal, por exemplo:
Você pode remover o elemento em um manipulador para o evento 'hide.bs.modal'.
fonte
this.modalService.open('myModal', {container: '#modalgoeshere'})
Use a versão .less dos arquivos. Determine quais menos arquivos você precisa e agrupe esses arquivos .less com:
Isso lhe dará a saída de:
fonte
Fiz um GIST com Bootstrap 3 dentro de uma classe chamada .bootstrap-wrapper https://gist.github.com/onigetoc/20c4c3933cabd8672e3e
Comecei com esta ferramenta: http://www.css-prefix.com/ E conserte o resto com pesquisar e substituir no PHPstorm. Todas as fontes @ font-face são hospedadas no maxcdn.
Exemplo de primeira linha
fonte
O namespacing quebra o div de pano de fundo do plugin Modal, uma vez que ele sempre é adicionado diretamente à tag <body>, ignorando o seu elemento de namespacing que tem os estilos aplicados a ele.
Você pode corrigir isso alterando a referência do plug-in para
$body
antes de mostrar o pano de fundo:A
$body
propriedade decide onde o cenário será adicionado.fonte
Para explicar melhor todos os passos de que Andrew falava para quem não sabe o que é Less. Aqui está um link que explica muito bem como isso é feito passo a passo. Como isolar Bootstrap ou outras bibliotecas CSS
fonte
Solução mais simples - comece a usar classes css isoladas de construção personalizadas para Bootstrap.
Por exemplo, para Bootstrap 4.1 baixe arquivos do diretório css4.1 -
https://github.com/cryptoapi/Isolate-Bootstrap-4.1-CSS-Themes
e envolva seu HTML em um div com a classe bootstrapiso:
O modelo de página com bootstrap 4 isolado será
fonte
Eu enfrentei o mesmo problema e método proposto por @Andrew infelizmente não ajudou no meu caso específico. As classes de bootstrap colidiram com as classes de outro framework. É assim que este projeto foi iniciado https://github.com/sneas/bootstrap-sass-namespace . Sinta-se à vontade para usar.
fonte
Como uma nota adicional para todos. Para fazer os modais funcionarem com um pano de fundo, você pode simplesmente copiar esses estilos do bootstrap3
fonte
Primeiro clone bootstrap do github:
Requisitos de instalação:
Abra scss / bootstrap.scss e adicione seu namespace:
Compilar bootstrap:
Abra
dist/css/bootstrap.css
e remova o namespace da taghtml
ebody
.Depois copie o conteúdo da pasta dist para o seu projeto e está tudo pronto.
Diverta-se!
fonte