相关疑难解决方法(0)

jQuery CSS插件将计算的元素样式返回到伪克隆那个元素?

我正在寻找一种方法,使用jQuery返回第一个匹配元素的计算样式对象.然后我可以将此对象传递给另一个jQuery的css方法调用.

例如,对于宽度,我可以执行以下操作以使2个div具有相同的宽度:

$('#div2').width($('#div1').width());
Run Code Online (Sandbox Code Playgroud)

如果我可以使文本输入看起来像现有的跨度,那将是很好的:

$('#input1').css($('#span1').css());
Run Code Online (Sandbox Code Playgroud)

其中.css()没有参数返回一个可以传递给.css(obj)的对象.

(我找不到这个jQuery插件,但它似乎应该存在.如果它不存在,我将把我的下面变成一个插件并发布它与我使用的所有属性.)

基本上,我想伪克隆某些元素,但使用不同的标记.例如,我有一个我要隐藏的li元素,并在其上放置一个看起来相同的输入元素.当用户键入时,看起来他们正在内联编辑元素.

我也对这种用于编辑的伪克隆问题的其他方法持开放态度.有什么建议?

这就是我现在拥有的.唯一的问题是获得所有可能的样式.这可能是一个荒谬的长名单.


jQuery.fn.css2 = jQuery.fn.css;
jQuery.fn.css = function() {
    if (arguments.length) return jQuery.fn.css2.apply(this, arguments);
    var attr = ['font-family','font-size','font-weight','font-style','color',
    'text-transform','text-decoration','letter-spacing','word-spacing',
    'line-height','text-align','vertical-align','direction','background-color',
    'background-image','background-repeat','background-position',
    'background-attachment','opacity','width','height','top','right','bottom',
    'left','margin-top','margin-right','margin-bottom','margin-left',
    'padding-top','padding-right','padding-bottom','padding-left',
    'border-top-width','border-right-width','border-bottom-width',
    'border-left-width','border-top-color','border-right-color',
    'border-bottom-color','border-left-color','border-top-style',
    'border-right-style','border-bottom-style','border-left-style','position',
    'display','visibility','z-index','overflow-x','overflow-y','white-space',
    'clip','float','clear','cursor','list-style-image','list-style-position',
    'list-style-type','marker-offset'];
    var len = attr.length, obj = {};
    for (var i = 0; i < len; i++) 
        obj[attr[i]] = jQuery.fn.css2.call(this, attr[i]);
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我现在已经使用上面的代码一段时间了.它运行良好,行为与原始css方法完全相同,只有一个例外:如果传​​递0个args,则返回计算出的样式对象.

正如您所看到的,如果适用的话,它会立即调用原始的css方法.否则,它将获取所有列出属性的计算样式(从Firebug的计算样式列表中收集).虽然它获得了很长的值列表,但速度非常快.希望它对其他人有用.

javascript css jquery web-applications

67
推荐指数
3
解决办法
4万
查看次数

获取应用于元素的css类的背景颜色

说,我有以下CSS类:

.upComing{ background:#ccc; font-weight:bold; }
Run Code Online (Sandbox Code Playgroud)

在我的HTML中,我有一个表,其中某些行应用了该类,如下所示:

<table>
  <tr> <td></td> <td></td> </tr>
  <tr> <td></td> <td></td> </tr>
  <tr class='upComing'> <td></td> <td></td> </tr>
  <tr> <td></td> <td></td> </tr>
  <tr class='upComing'> <td></td> <td></td> </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好,但是通过JavaScript我有事件听td点击,我想得到行的颜色(我知道我可以得到行的类,但在这种情况下,我需要能够得到来自班级的颜色).

我需要这样做,因为表可以导出到excel文件,如果它们在CSS类上,行颜色不会应用于excel文件,我想在发送html之前将这种颜色应用于每个td到excel发电机.

PS:这个表是从我们创建的jQuery插件动态生成的,它仍然是一个正在进行中的工作,但是当我们对它充满信心时,我们将为公众发布它.

- 更新 - 这是关于这个主题的更新,确实有一个纯粹的javascript解决方案,我不得不深入研究jQuery的源代码来检查这一点.这是解决方案:

1)指向所需的元素

var tr = $("tr.upComing").first()[0]; 
Run Code Online (Sandbox Code Playgroud)

2)获得元素的COMPUTED STYLE

var css = window.getComputedStyle( tr );
Run Code Online (Sandbox Code Playgroud)

3)获得COMPUTED STYLE的属性值

var color = css.getPropertyValue( "background-color" );
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只在Mac上测试了FF,Safari,Chromium和Opera,如果有人可以在IE上尝试这个并给我们反馈意见,那将是非常棒的.

javascript css

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

打印时是否可以在Chrome中使用CSS3 / 2添加页码?

我相信我已经测试了StackOverflow上所有可用的解决方案,但都没有在Chrome(72)中运行。我在W3C上遵循了规范,但一切似乎只能在FireFox中工作。

我只想做一个简单的事情-使用反增量将页码添加到打印的文档中。我尝试了HTML4和HTML5,但没有任何结果。

有什么解决办法吗?

Chrome版本:72.0.3626.81(官方内部版本)(64位)

解决方案在FireFox中运行良好:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<style type="text/css">

#content {
    display: table;
}

#pageFooter {
    display: table-footer-group;
}

#pageFooter:after {
    counter-increment: page;
    content: counter(page);
}

</style>
<body>


<div id="content">
<div id="pageFooter">Page </div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing..A LOT MORE STUFF TO FILL THE PAGES </p>
</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

另一种解决方案(HTML5不支持@page):

@page {
    @bottom-right {
        content: counter(page) " of " counter(pages);
    }
}
Run Code Online (Sandbox Code Playgroud)

截至2015年12月3日,主要浏览器似乎不支持@ bottom-center之类的边距框,如下所示。如果您搜索“ @ bottom-center”,则会看到很多红色的“不支持”框。当您搜索网络时,听起来好像它们可以工作,但实际上还不支持它们。分页媒体的某些元素可以很好地工作,例如分页之后,但页边距框却不能。– James Toomey 2015年12月3日20:40

相似的线程(旧的,Chrome没有分辨率):

  1. 浏览器对CSS页码的支持 …

html css printing

5
推荐指数
1
解决办法
799
查看次数

JavaScript:将ex转换为px

所以我正在阅读elem.style.width,并获得类似"3.1415926ex"的内容.

我想将其转换为"px".

JavaScript是否已内置函数来执行此操作?我宁愿砍掉最后2个字符串的字母,将其作为数字读取,然后乘以魔法常数.

谢谢!

javascript

2
推荐指数
1
解决办法
1945
查看次数

如果条件,我如何使用JavaScript比较CSS样式值?

我有一个简短的问题.如果我想比较一个样式左/右值和另一个坐标(比如鼠标)我该怎么做?

这是我尝试没有鼠标坐标,但由于某种原因,我的条件永远不会执行...

<style>
    #container
    {
        position:absolute;
        left:400px;
        top:200px;
    }
</style>

<script>
function moveExit(){    
    var containerId = document.getElementById("container").style;

    if(containerId.left == 400 + "px")
        containerId.left = 395 + "px";  
}
</script>
Run Code Online (Sandbox Code Playgroud)

这是我的身体:

<body>
    <div id="container">
    <img
    src="Images/image.jpg"
    onmouseover="moveExit();"
    />
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

这是我第一次玩javascript ..谢谢!

html javascript css

0
推荐指数
1
解决办法
6143
查看次数

标签 统计

css ×4

javascript ×4

html ×2

jquery ×1

printing ×1

web-applications ×1