2017-10-25 2 views
0

Ich habe ein Bootstrap-Modal, das ein Bootstrap-Karussell enthält. Ich brauche die Folie, die im Karussell aktiv ist, um den Fokus zu haben. Ich versuche, den Umriss-Stil zu überschreiben, um den Fokus besser sichtbar zu machen (besonders in Edge). Ich kann mich erfolgreich konzentrieren (der Codepen wird das nur auf der ersten Folie für Demozwecke tun), und wenn ich den Umriss NICHT überschreibe, kann man die Standardumrisse des Browsers auf dem Bild sehen. Wenn ich jedoch versuche, den Umriss zu überschreiben, verschwindet er vollständig.Hinzufügen von Fokus und Override auf CSS-Gliederung bewirkt, dass die Gliederung verschwindet

Codepen: https://codepen.io/VVarPiglet/pen/QqegMd

HTML

<div class="main"> 
<div class="button"> 
    <button class="modal-pop">Open Modal</button> 
</div> 
<div class="modal fade" id="my-modal" tabindex="-1" role="dialog" aria-labelledby="Modal" aria-hidden="true" data-hidden-by="user"> 
    <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal"> 
        <span aria-hidden="true" class="close-symbol">&times;</span> 
       </button> 
      </div> 
      <div class="modal-body"> 
       <div id="my-carousel" class="carousel slide" data-interval="false" data-wrap="false"> 
        <div class="carousel-inner"> 
         <div class="item card active" tabindex="1"> 
         <img class="card-image" src="https://www.w3schools.com/css/img_fjords.jpg"/> 
         </div> 
         <div class="item card" tabindex="1"> 
         <img class="card-image" src="https://upload.wikimedia.org/wikipedia/commons/5/5b/India_Gate_600x400.jpg"/> 
         </div> 
        </div> 
        <a class="left carousel-control" href="#my-carousel" role="button" data-slide="prev"> 
         <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 
         <span class="sr-only">Previous Label</span> 
        </a> 
        <a class="right carousel-control" href="#my-carousel" role="button" data-slide="next"> 
         <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 
         <span class="sr-only">Next Label</span> 
        </a> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

CSS

.main{ 
    width: 100%; 
    } 
    .button{ 
    margin: 20px auto; 
    text-align: center; 
    } 

    #my-modal{ 
    width 500px; 
    } 

    .card-image{ 
    width: 100% 
    } 

    .modal-body{ 
    padding: 0; 
    } 

    /** comment the below out to see the outline that automatically takes place. It is a little hard to see, but it is a 1px solid blue outline */ 
    .carousel-inner .item.active:focus 
    { 
    outline: #00bfff solid 5px; 
    } 

Schritte zum Reproduzieren:

  1. Navigieren Sie zu Codepen.
  2. Drücken Sie die Taste, um Modal zu öffnen.
  3. Beachten Sie, dass es keinen Überblick gibt, um Fokus zu beschreiben.
  4. Öffnen Sie den CSS-Editor.
  5. Scrollen Sie bis zum Ende und löschen oder kommentieren Sie die Konturüberschreibung.
  6. Speichern.
  7. Drücken Sie die Taste, um Modal zu öffnen.
  8. Beachten Sie, dass das Bild eine Kontur zum Beschreiben des Fokus hat.

Wie kann ich die Gliederung erfolgreich überschreiben?

+0

Hallo, was meinst du du Wollen Sie, dass die aktive Folie "Fokus" hat? Möchtest du, dass es einen Umriss oder einen anderen Effekt hat? – Laura

+0

Yeah beide konzentrieren, und ich möchte die Kontur dicker sein. Ich habe herausgefunden, dass der auf Karussell verborgene Überlauf den Umriss verdeckt. Ich sollte in der Lage sein, dies zu Überlauf zu ändern: sichtbar ohne irgendwelche Probleme. Allerdings gibt es immer noch das Rätsel, warum der Browser seinen Standard-Umriss zeigt, aber wenn ich versuche, nur zu überschreiben, dann verschwindet es. –

+0

Eigentlich Überlauf: sichtbar bricht mein Layout im aktuellen Projekt, so dass ich das nicht nutzen kann. :( –

Antwort

0

ich in der Lage war, dies zu beheben, nachdem über diese anderen Stapel Post kommen. Das war extrem schwer zu suchen! styling the outline border with outer overflow set to hidden

Die Lösung, die ich wählte eine Kombination von zwei Vorschläge auf dieser Seite war:

.carousel-inner .item.active:focus 
{ 
    outline: 2px solid #00bfff; 
    outline-offset: -2px; 
} 

/* FIX FOR EDGE: When Edge impliments outline-offset will want to delete 
this block. But until then this is the best method 
to allow a noticeable outline for accessibility 
*/ 
.carousel-inner .item.active:focus::after 
{ 
    content: ""; 
    height: 99.19%; 
    outline: 2px solid #00bfff; 
    position: absolute; 
    top: 2px; 
    left: 2px; 
    width: 99.19%; 
    z-index: 99999; 
} 

Ich aktualisiert die codepen auch mit dieser Lösung: https://codepen.io/VVarPiglet/pen/QqegMd

1

Von dem, was ich sehen kann, bin ich mir nicht sicher, dass Sie die :focus benötigen, wenn Sie den .active Gegenstand zielen. Auch die overflow: hidden versteckt tatsächlich den Umriss.

Versuchen Sie stattdessen:

.carousel-inner .item.active { 
    border: #00bfff solid 5px; 
} 
+0

Hey Laura danke für das Betrachten.Der Grund, warum ich mit Gliederung gehen muss, ist, weil es das Layout nicht beeinflusst. Wenn Sie bemerken, dass ein Rahmen gefaltet ist, schrumpft der Inhalt innerhalb der Karte. Auch gibt es Bedenken hinsichtlich der Zugänglichkeit. Wenn ein Leser auf dem Inhalt ist, dann hätte er einen doppelten dicken Rand (einen von dem Leser auf der Außenseite, und einen von dem Inhalt auf der Innenseite. –

+0

Ich gab Ihnen eine Verbesserung, weil es eine gute Lösung unter den richtigen Umständen ist. –

+0

Ah ja, ich verstehe, das macht Sinn, danke, dass du deine Lösung gefunden hast! – Laura

Verwandte Themen