2015-07-17 22 views
9

Pracuję na stronie, która obsługuje wiele różnych ustawień regionalnych. Nasza następna lokalizacja to język hebrajski, który jest językiem pisanym od prawej do lewej. Ustawiam dir=rtl i lang=he na elemencie HTML, a niektóre rzeczy zmieniają się (tak jak powinny).Czy istnieje sposób przełączania lewych i prawych wartości css w języku od prawej do lewej?

Duża część witryny wykorzystuje elementy z pozycjonowaniem bezwzględnym, ustawiając lewą wartość. Czy istnieje sposób, aby to zrobić, gdy jesteś w trybie rtl, który przełączy go na odpowiednią wartość?

Wiem, że mogę mieć klasę rtl na moim elemencie html i nadpisuję css, gdy ta klasa jest obecna, ale projekt jest dość duży i nie byłoby fajnie ścigać wszystkie te wystąpienia ręcznie.

+1

Chyba nie ma inbuild sposób to zrobić, ale to jest zupełnie interresting pytanie rzeczywiście –

+0

można ustawić w zmiennej tablicy globalnej (lub w bazie danych i dostać go z JSON), aby określić, które języki są pisane od lewej do prawej i na odwrót. –

+0

W przypadku języków od prawej do lewej ramy takie jak WordPress używają pliku 'rtl.css', więc najprawdopodobniej będziesz musiał zdefiniować drugi plik css. Tak długo, jak wszystkie informacje o pozycjonowaniu są w css, będzie to działało, ale metody javascript używające lewej i prawej strony do przenoszenia rzeczy również musiałyby zostać zmodyfikowane. – ps2goat

Odpowiedz

2

Wydaje mi się, że dodawanie klas byłoby bardziej niezawodne, ale biorąc pod uwagę, ile by to nie było zabawy, zapoluj je za pomocą JavaScript!

Codepen

$(document).ready(function() { 
    var elsToFlip = $('*') 
    elsToFlip.each(function() { 
    var pos = $(this).css('position') 
     , left = $(this).css('left') 

    if (pos === 'absolute' && left !== 'auto') { 
     $(this).css({ 
     left: 'initial' 
     , right: left 
     }) 
    } 
    }) 
}) 
+0

Coś takiego prawdopodobnie by działało. Prawdopodobnie zmodyfikowałbym to nieco, ale nie mogę wymyślić innego sposobu, żeby to naprawdę zrobić. –

+0

Zmień dalej! To naprawdę zależy od tego, jaki jest pożądany rezultat, ale na pewno zadziała. – azium