ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-动态更改引导网格方向(从ltr到rtl或reverese)

2019-11-21 04:33:06  阅读:255  来源: 互联网

标签:twitter-bootstrap right-to-left css php jquery


我们正在制作一个可以同时使用Rtl和Ltr(En和Fa)的站点.

我们要使用高音引导程序(3. *).

我们的mvc是基于php制作的.

如果站点语言为fa,是否可以使用网格流顺序为Rtl的引导程序,而当语言为英语时是否可以使用Ltr?

用语言来说,我的意思是:www.example.com/en或www.example.com/fa

/ en时,我们必须使用Ltr的引导程序(从左到右)

当它是/ fa时,我们必须使用Rtl的bootstrap(从右到左)

我知道我可以使用一些引导主题,这些主题是Rtl,但是如何同时使用rtl和ltr并在其中动态更改呢? (也许在页面刷新站点方向变为Rtl或Ltr!)之后?

解决方法:

您可以“即时”修改CSS规则,此处附带一个函数,它修改了Bootstrap 3的主要类,例如col-(xs | sm | md | lg)-(1-12),col-(xs | sm | md | lg)-push-(1-12),col-(xs | sm | md | lg)-pull-(1-12),col-(xs | sm | md | lg)-offset-(1 -12),还有很多要修改的类,但我只需要那些.

您所需要做的就是调用函数layout.setDirection(‘rtl’)或layout.setDirection(‘ltr’),它将更改CSS规则.

应该适用于所有浏览器(IE> = 9).

        var layout = {};
        layout.setDirection = function (direction) {
            layout.rtl = (direction === 'rtl');
            document.getElementsByTagName("html")[0].style.direction = direction;
            var styleSheets = document.styleSheets;
            var modifyRule = function (rule) {
                if (rule.style.getPropertyValue(layout.rtl ? 'left' : 'right') && rule.selectorText.match(/\.col-(xs|sm|md|lg)-push-\d\d*/)) {
                    rule.style.setProperty((layout.rtl ? 'right' : 'left'), rule.style.getPropertyValue((layout.rtl ? 'left' : 'right')));
                    rule.style.removeProperty((layout.rtl ? 'left' : 'right'));
                }
                if (rule.style.getPropertyValue(layout.rtl ? 'right' : 'left') && rule.selectorText.match(/\.col-(xs|sm|md|lg)-pull-\d\d*/)) {
                    rule.style.setProperty((layout.rtl ? 'left' : 'right'), rule.style.getPropertyValue((layout.rtl ? 'right' : 'left')));
                    rule.style.removeProperty((layout.rtl ? 'right' : 'left'));
                }
                if (rule.style.getPropertyValue(layout.rtl ? 'margin-left' : 'margin-right') && rule.selectorText.match(/\.col-(xs|sm|md|lg)-offset-\d\d*/)) {
                    rule.style.setProperty((layout.rtl ? 'margin-right' : 'margin-left'), rule.style.getPropertyValue((layout.rtl ? 'margin-left' : 'margin-right')));
                    rule.style.removeProperty((layout.rtl ? 'margin-left' : 'margin-right'));
                }
                if (rule.style.getPropertyValue('float') && rule.selectorText.match(/\.col-(xs|sm|md|lg)-\d\d*/)) {
                    rule.style.setProperty('float', (layout.rtl ? 'right' : 'left'));
                }
            };
            try {
                for (var i = 0; i < styleSheets.length; i++) {
                    var rules = styleSheets[i].cssRules || styleSheets[i].rules;
                    if (rules) {
                        for (var j = 0; j < rules.length; j++) {
                            if (rules[j].type === 4) {
                                var mediaRules = rules[j].cssRules || rules[j].rules
                                for (var y = 0; y < mediaRules.length; y++) {
                                    modifyRule(mediaRules[y]);
                                }
                            }
                            if (rules[j].type === 1) {
                                modifyRule(rules[j]);
                            }

                        }
                    }
                }
            } catch (e) {
                // Firefox might throw a SecurityError exception but it will work
                if (e.name !== 'SecurityError') {
                    throw e;
                }
            }
        }

标签:twitter-bootstrap,right-to-left,css,php,jquery
来源: https://codeday.me/bug/20191121/2048956.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有