小编Cha*_*cey的帖子

iOS和Safari中CSS`currentColor`关键字的问题

TL; DR

  1. 这是一个小提琴(谢谢@NicoO):在Safari中,初始的"红色"颜色应用于所有其他实例currentColor.
  2. 我如何用CSS修复继承问题currentColor
  3. 或者我如何才能检测CSS颜色关键字的支持currentColor
  4. 我还需要检测部分支持.例如,Apple Webkit在大多数情况下使用不稳定.

全文

currentColor在项目中使用CSS color关键字.使用它相当丰富,我可能会补充说.例如:

我在站点标题组件上使用它,它漂浮在全视口轮播上.

每张幻灯片都有一个变化background-color和对比color分配给它.当幻灯片更改时,它会更新站点标题以通知新的对比度.Site Header color会相应地进行交换,并且任何带有inherit or currentColor关键字的内容都会更新,例如,<svg>s fill,some border-colorbackground-colors.

另一个更简单的例子:

我有各种颜色调色板,我作为类名(例如,bg--emeraldbg--blue)应用到盒子上.这些框的内容可以是链接或按钮,也可以只是文本.currentColor例如,通过应用于按钮边框,CSS变得非常简单,因为我只需要color为每个颜色方案设置 属性.无需更新每个受影响的子节点.

这一切都很光滑.

在Firefox,Chrome,Opera,Internet Explorer 9+及其"移动"等价物下,支持非常出色.不幸的是,Apple Webkit(iOS Safari和OSX Safari)遭受了糟糕和不稳定的支持.它不是在任何地方都有效,也不是所有的时间 - 即使是在最简单的例子中 - 也不是在需要时非常好地或一致地重新绘制.

我已经做了一些搜索,并没有找到很多人使用这个实用的CSS关键字,并且没有现有的功能 - 检测它或polyfill它.我不知道如何为此功能进行Modernizr测试.特别是要像Apple Webkit那样检测部分支持.

我可能只是想在浏览器中检测它,直到我能想到一个解决方案,或者偶然发现那些能够比我更快地想到解决方案的聪明人.

的jsfiddle

我修改了小提琴(上面链接)以严重复制我所拥有的问题.我注意到的是它currentColor被锁定了最初继承的值("红色")并在应用于其他所有内容时将其携带.例如,如果您切换:nth-child(1)color到别的东西,新的值将被应用到所有使用下列元素currentColor. …

css safari webkit

9
推荐指数
2
解决办法
1813
查看次数

MSIE:jQuery的append()/ html()不起作用,使用了getElementById().innerHTML

这个很长,

前提

被召集来帮助客户修复他们当前项目的一些错误.需要修复的是一份工作清单页面.您有一个作业列表,单击一个,如果激活了JavaScript,则会调用AJAX来将作业的详细信息动态加载到现有元素中(DIV#emploi_details).如果未激活JS,则只需使用作业的详细信息重新加载页面(不太重要).

我跳上他们的实验室服务器在dev网站上工作.

问题

基本上,IE7(起初)没有显示通过$().load()加载的内容.IE6与innerHTML一起工作顺利.请求已发送,我每次都会收到回复.我收到数据,我可以提醒()它并看到它,但实际的内容转储不起作用.Safari,Firefox,没问题.我正在加载信息的DIV#emploi_details元素有一个CSS显示:none; 在其样式表中,并在加载内容后显示(其他不那么重要的细节).

show_emploi = function(id, succ_id)
{
    $('#emploi_details').fadeOut(800, function() {
        var $$ = $(this);

        $$.load('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
            if (isIE6) document.getElementById('emploi_details').innerHTML = data;
            $$.show();
        });
        $('#bgContent').fadeOut();
    });
}
Run Code Online (Sandbox Code Playgroud)

解决方案

起初我的印象可能是$().load()刚刚起作用,所以我改为$ .get()来更好地控制加载内容的操作.

$.get('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
    $$.empty().append(data).show();
});
Run Code Online (Sandbox Code Playgroud)

这有效.在所有浏览器中包括IE6和IE7.没问题.很奇怪,但你知道它是否有效并且全面防范,不要问问题.

剧情扭曲

现在这里的狗屎很奇怪.我认为修复了这个错误并将解决方案应用到了实时网站上......它不起作用.IE就是不喜欢它.在尝试$ .ajax和所有其他类型的东西后,我最终在实时网站上使用这个:

$.get('emploi_<?php echo $data['lang']; ?>.php', …
Run Code Online (Sandbox Code Playgroud)

jquery internet-explorer append innerhtml getelementbyid

6
推荐指数
1
解决办法
1万
查看次数