【问题标题】:Best solution/framework to Responsive Design for IE7IE7 响应式设计的最佳解决方案/框架
【发布时间】:2011-11-18 16:02:44
【问题描述】:

对于那些仍然不了解响应式设计的人,我建议this link

只要它不理解媒体查询,例如:

@media screen and (max-width: 1280px)   {
    h1 { font-size: 120px; padding: 10px; color:#999999 !important; }
    h2{font-size:35px;}
}
    
@media screen and (max-width: 1024px)   {
    h1 { font-size: 90px; padding: 1px; color:#999 !important; }
    h2{font-size:25px;}
    
}

@media screen and (max-width: 740px)    {
    h1 { font-size: 70px; padding: 1px; color:#999 !important; }
    h2{font-size:16px;}
    .left-col { width: 100%; }
    .sidebar { width: 100%; }
}

@media screen and (max-width: 480px) {

}

@media screen and (max-width: 478px)    {
    h1 { font-size: 50px; padding: 1px; color:#999; }
    h2 { font-size: 12px; padding: 1px; }
    body { font-size: 13px; }
}

我正在考虑使用adapt.js,你可以这样做:

<script>
// Edit to suit your needs.
var ADAPT_CONFIG = {
  // Where is your CSS?
  path: 'assets/css/',

  // false = Only run once, when page first loads.
  // true = Change on window resize and page tilt.
  dynamic: true,

  // First range entry is the minimum.
  // Last range entry is the maximum.
  // Separate ranges by "to" keyword.
  range: [
    '0px    to 760px  = mobile.min.css',
    '760px  to 980px  = 720.min.css',
    '980px  to 1280px = 960.min.css',
    '1280px to 1600px = 1200.min.css',
    '1600px to 1940px = 1560.min.css',
    '1940px to 2540px = 1920.min.css',
    '2540px           = 2520.min.css'
  ]
};
</script>
<script src="assets/js/adapt.min.js"></script>

它应该与 960 grid 一起使用,但你仍然可以在那些 .css 中使用任何你喜欢的东西

但问题是您需要启用 JavaScript。我希望你们中的任何人都知道更灵活(响应迅速!)的解决方案,有吗?

【问题讨论】:

  • 会为downvote发表评论
  • 感谢分享 Smashing Magazine 链接,非常有趣的信息!
  • 我刚入坑,也印象深刻!

标签: javascript css responsive-design css-frameworks


【解决方案1】:

只是调查一下。我本来打算使用adapter.js,但我发现一些JS可以在旧浏览器(包括IE7)上启用媒体查询功能。

这样,没有 JS 的较新浏览器仍然可以正常工作,响应式设计会退回到最小版本的唯一情况是开启

这是我发现的两个最好的 JS 媒体查询回退:


回复

https://github.com/scottjehl/Respond

压缩后的响应大小约为 3kb,并支持简单响应式设计所需的基本媒体查询(最小/最大宽度)


css3-mediaqueries-js

http://code.google.com/p/css3-mediaqueries-js/


【讨论】:

  • Respond.js 是要走的路 ;)
  • 我知道我真的迟到了,但是你们中的任何人都尝试过将 Respond.js 与 twitter bootstrap 或 Metro UI 一起使用吗?很多企业客户还在用IE7-8,支持是必须的。 ://
【解决方案2】:

我不知道有什么方法可以在不使用 Javascript 的情况下使网站在 IE6-8 中响应。但是,可以只为这些浏览器提供您网站的桌面版本,并使其在所有其他浏览器中都具有响应性。我相信这是最好的方法,因为无论如何 IE6-8 (几乎?)都是专门用于桌面的。

Cascade Framework 是我所知道的唯一一个带有实现该技术的网格系统的 CSS 框架。

See also this demo.

【讨论】:

    【解决方案3】:

    我不喜欢让旧浏览器处理媒体查询的一些替代方案的想法。通过 AJAX 加载 CSS 文件并对其进行解析对我来说听起来效率不高。

    为 IE7 甚至 IE5/6 制作响应式网站的另一个选择是使用 JavaScript 根据屏幕宽度应用类,类似于媒体查询。只要启用了 JavaScript,这适用于所有浏览器。如果 JavaScript 被禁用,您可以使用默认分辨率。

    这被描述为here

    一些示例 JavaScript 来完成此操作:

    <script type="text/javascript">
        function hasClass(el, cls) {
            return el.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
        }
        function addClass(el, cls) {
            if (!this.hasClass(el, cls)) el.className += " " + cls;
        }
        function removeClass(el, cls) {
            if (hasClass(el, cls)) {
                var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
                el.className = el.className.replace(reg, ' ');
            }
        }
    
        var addEvent = function (elem, type, eventHandle) {
            if (elem == null || elem == undefined) return;
            if (elem.addEventListener) {
                elem.addEventListener(type, eventHandle, false);
            } else if (elem.attachEvent) {
                elem.attachEvent("on" + type, eventHandle);
            } else {
                elem["on" + type] = eventHandle;
            }
        };
    
        function responsive() {
            var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
    
            for (var i = 0; i < breakpoints.length; i++) {
                if (breakpoints[i][0] == "max-width") {
                    if (w <= breakpoints[i][1]) {
                        addClass(document.getElementById(id), breakpoints[i][2]);
                    }
                    else {
                        removeClass(document.getElementById(id), breakpoints[i][2]);
                    }
                }
                else if (breakpoints[i][0] == "min-width") {
                    if (w >= breakpoints[i][1]) {
                        addClass(document.getElementById(id), breakpoints[i][2]);
                    }
                    else {
                        removeClass(document.getElementById(id), breakpoints[i][2]);
                    }
                }
            }
        }
    
        var resizeTimeoutId;
    
        function resized() {
            window.clearTimeout(resizeTimeoutId);
            resizeTimeoutId = window.setTimeout('responsive();', 10);
        }
    
        var id = "body";
        var breakpoints = [["max-width", 630, "max630"], ["min-width", 1890, "min1890"]];
    
        addEvent(window, "resize", resized);
    
        responsive();
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2021-01-01
      • 2020-04-12
      相关资源
      最近更新 更多