CSS Sprite - 我可以用某种方式在 CSS 中做简单的数学运算吗?

标签 css sprite sprite-sheet

我使用一个包含我所有图标的图标表,现在在我的 CSS 中引用它们。

每个图标都是 32*32 并且在这样的网格中:

AA BB CC DD ...

A1 B1 C1 D1 ......

A2 B2 C2 D2 .......

UU XX YY ZZ ......

etc.

其中 AA = 图标,A1 = 悬停,A2 = 事件。

它工作正常,现在在 CSS 中是这样的:

.icon {

height:32px;

width:32px;

background-image:url('/img/slbuttons.png');

}

.AAicon {background-position:0px 0px;}

.BBicon {background-position:-32px 0px;}

.CCicon {background-position:-64px 0px;}

等...

我正在寻找的是以某种方式使它更简单,图标的大小不会改变 (32*32) 所以我不想手动编写每个不同的图标,我只想引用那个 ex。 :

AAIcon = x0,y0, BBIcon = x1,y0, CCIcon=x2,y0 A1Icon = x0,y1,etc.etc.

我不必坐下来自己写每个 32、64、96、128 等 - 难道不能制作一个 (xpos=gridcount*32, ypos=gridcount*32) 吗?

我想要这个的原因是我只是改变了我的图标包大小然后我必须再次重写所有这些值,每个 block 图标/悬停/事件实际上是相同的除了坐标,将是一个很大的帮助如果我可以有一个定义大小的全局变量,然后它会自动用于稍后调整定位。

不知道我是否可以在 CSS 中做到这一点,也许那是 CSS3 还是?

我根本不是 CSS 或 WEB 开发方面的专家,所以这可能很简单。

最佳答案

在纯 CSS 中,不,你不能做数学。它严格来说是一种样式语言。在动态设置页面样式时,有几个选项。

您可以使用 SASS 和 LESS,它们是它们自己的语言,通过处理器运行(SASS 使用 Ruby,LESS 使用 JavaScript)来生成样式表。

第二种选择是使用 JavaScript,对于初学者来说,jQuery 可能是最简单的选择。使用类似 <script src="js/jquery.js"></script> 的方式包含 jQuery 源代码后(或者 Google CDN),除了标准 JavaScript 之外,您还可以自由使用 jQuery 库。

获取图像高度的简短代码段:

<script>
var imgHeight = $('.icon').height(); //remove the height and width from your CSS first!
var imgWidth = $('.icon').width();
</script>

然后您可以使用 jQuery 根据背景图片的高度动态地操作 CSS:

<script>
var iconA = $('.AAIcon');
iconA.css('background-position','imgHeight');
</script>

jQuery

关于CSS Sprite - 我可以用某种方式在 CSS 中做简单的数学运算吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18040088/

相关文章:

python - arcade中的碰撞错误: When I use the arcade. python中的check_for_collision方法并发生碰撞,它给出了错误

java - 如何为 Sprite 的特定部分着色

javascript - 样式表在 <canvas> 上未正确裁剪

css - IE 10/11 flex 子溢出对齐的解决方法

javascript - 使用 jquery 计算包含另一个有边距的元素的高度

java - 如何使用 JSF 2 h :outputStylesheet? 实现 "CSS versioning"(以解决缓存问题)

java - 如何放大像素? - java

html - 在所有浏览器中,文本旁边需要 li 圆圈样式对齐中心词

html - CSS Sprite 和文本的垂直居中

javascript - Pixi.js 从动画 gif 文件生成 SpriteSheet 动画或 MovieClip