- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用基于组件的 CSS 样式,所以我一直在使用 mixin 来允许我使用媒体查询而不会意外地编译数百个。这就是我为屏幕尺寸所做的:
主文件:
.mq-medium() {}
@import //other files
@media only screen and (min-width: 600px) {
.mq-medium;
}
另一个文件:
.mq-medium() {
.banner {
width: 50%;
}
}
这可以多次使用并产生分组查询。
我正在尝试对视网膜背景图像查询做同样的事情,但我不知道如何去做。这是我的测试:
.mq-retina() { }
.background-image(@image){
@filename: ~`/(.*)\.(jpg|jpeg|png|gif)/.exec(@{image})[1]`;
@extension: ~`/(.*)\.(jpg|jpeg|png|gif)/.exec(@{image})[2]`;
background-image: ~`"url(@{filename}.@{extension})"`;
.mq-retina() {
& {
background-image: ~`"url(@{filename}_2x.@{extension})"`;
background-size: 100%;
}
}
}
.lol {
.background-image("test.jpg");
}
@media only screen and (min-device-pixel-ratio: 1.5) { //shortened for this example
.mq-retina;
}
但是输出只是
.lol {
background-image: url(test.jpg);
}
我认为这与范围界定问题有关,但我不确定如何解决这个问题。如何添加到 .mq-retina()
mixin 而不会出现范围界定问题?
最佳答案
(有关此解决方案的上下文,请参阅上面的评论)。我会说非重复媒体查询的代价将永远是“然后重复其他事情”。 IE。它要么必须是媒体相关的属性,如:
// ...................................
// usage:
.mq-default() {
.banner {
.background-image("test.jpg");
}
}
.mq-retina() {
.banner {
.background-image("test.jpg");
}
}
// ...................................
// impl:
.mq-default() {}
.mq-retina() {}
& {
.mq-default;
.background-image(@image) {
background-image: @image;
}
}
@media (min-device-pixel-ratio: 1.5) {
.mq-retina;
.background-image(@image) {
background-image: replace(@image, "\.", "_2x.");
background-size: 100%;
}
}
或者媒体依赖于选择器本身,如:
// ...................................
// usage:
.background-image(banner, "test.jpg");
// ...................................
// impl:
.mq-retina() {}
@media (min-device-pixel-ratio: 1.5) {
.mq-retina;
}
.background-image(@class, @image) {
.@{class} {
background-image: @image;
}
.mq-retina() {
.@{class} {
background-image: replace(@image, "\.", "_2x.");
background-size: 100%;
}
}
}
附言对于这个简化的案例,也可以修改第一个示例以消除重复,例如:
// ...................................
// usage:
.mq-common() {
.banner {
.background-image("test.jpg");
}
}
// ...................................
// impl:
.mq-default() {.mq-common}
.mq-retina() {.mq-common}
& {
.mq-default;
.background-image(@image) {
background-image: @image;
}
}
@media (min-device-pixel-ratio: 1.5) {
.mq-retina;
.background-image(@image) {
background-image: replace(@image, "\.", "_2x.");
background-size: 100%;
}
}
但这样它实际上变成了第二个示例的变体(其中更复杂的代码将导致在生成的 CSS 中重复选择器,因为您不想将所有属性都放入 .mq-common
), 不算整个事情也变得相当令人头疼。
附言最后, 最终可以通过引入另一个间接级别来合并“所有内容”(在生成的 CSS 中),但源代码本身变得过于冗长,无法在实践中实际使用。 (在这个例子中,我将把它分成两个文件以获得更清晰的代码,但这并不是真正需要的 - 导入的文件可以写成一个大的 mixin):
// ...................................
// styles.less:
.banner {
.mq-default({
color: red;
});
.mq-medium({
color: green;
});
.mq-retina({
color: blue;
});
.background-image("test.jpg");
note: not "wrapped" properties will appear in every media block;
}
.background-image(@image) {
.mq-default({
background-image: @image;
});
.mq-retina({
background-image: replace(@image, "\.", "_2x.");
background-size: 100%;
});
}
// ...................................
// main.less:
.media-import(default);
@media (min-width: 600px) {
.media-import(medium);
}
@media (min-device-pixel-ratio: 1.5) {
.media-import(retina);
}
.media-import(@device) {
.mq-default(@styles) when (@device = default) {@styles();}
.mq-medium(@styles) when (@device = medium) {@styles();}
.mq-retina(@styles) when (@device = retina) {@styles();}
@import (multiple) "styles.less";
}
关于css - 无冗余的 LESS CSS 视网膜媒体查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26000660/
IOS8 的 LaunchImage 大小是多少? 什么是 Retina HD5.5、Retina HD 4.7 和 Retina 4?尺寸? DPI 是多少?? 72 我猜? 苹果文档的链接会很棒,
我不太明白 window.devicePixelRatio 值是什么,以及它如何决定该设备需要什么尺寸的图像(2x、3x 等)。 例如,在 iMac 5K Retina(2015 年末)上,我预计像素
在创建网站/移动应用程序并适应视网膜/高分辨率屏幕(需要两倍大小的图像)时,为什么只包含更大的图像不是一个好主意,并将其大小缩小一半,这样您只有一张图像,在非视网膜图像上,它只会变得更小(图像中的细节
我正在使用以下代码在我的 iPhone 应用程序中设置背景。 [[self view] setBackgroundColor:[UIColor colorWithPatternImage:[UIIma
我有一个应用程序,其中设计师为我提供了两种格式的 Assets 或 png,非视网膜和视网膜,格式正确并用 @2 正确命名。视网膜图像工作正常,但非视网膜图像在它们后面显示出奇怪的白色背景。有人经历过
所以我知道这是一个棘手的问题。我遇到过 Sprite 和高对比度模式的问题,基本上可以用如下代码解决: .icon:before { content: url(icons.png); posi
我的渐变 div 上有一条奇怪的水平线。它只在 Safari 和视网膜显示器上显示,我不明白为什么。还有其他人遇到过这个问题吗? HTML: CSS: .img-gradient2 { po
我正在为视网膜显示器调整我的网页,我正在使用 IrfanView 来加倍我的图像。但是,通常 640 x 427 px 的图像现在变成了 1281 x 855 px。这会按预期工作吗?我也在使用 Re
我为同一个网站制作了两个不同的网页:一个用于手机设备,一个用于桌面设备。主要原因是因为该网页有很多按钮,如果您使用的是手机,则很难触摸这些按钮,因为它们在手机屏幕上看起来很小。所以我制作了一个 jav
我们知道使用@2x 和不使用它时视网膜上的图像是如何工作的。但是电影呢? 对于 Retina 显示器,我是否必须让一部电影的分辨率是另一部电影的两倍?命名约定 @2x 代表电影?只拥有更大的一个并使其
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Detect Retina Display 我们如何通过 Objective-C 代码知道设备是否具有视网膜
我刚刚将 Xcode 从 4.2 升级到 4.3.3。然后我启动 iOS 模拟器(将“硬件 -> 设备”设置为“iPhone(视网膜)”),模拟器现在显得如此之大,以至于应用程序页面实际上需要滚动!
我尝试从视网膜显示屏获取屏幕截图,并在窗口上绘制此图像。 我可以捕获 CGDirectDisplayID displayId = CGMainDisplayID() CGImage imageRef
我有一张 PNG 图片,我应该在我的 iPhone 应用程序中使用它,但首先,我必须为其提供 iPhone 4 视网膜屏幕的尺寸。有谁知道它的尺寸是什么或者如何做到这一点? 最佳答案 iPhone 4
我想编写一个自定义绘图 View ,它应该利用 Retina 显示屏。我使用的是 2019 款 MacBook Pro。为了测试绘图,我只是绘制宽度为 1px 的平行线。但线条在整个 View 中显示
我已经将一些应用程序迁移到 iPhone5,但我无法解决这个问题。我遵循相同的步骤,但现在我没有 xib 布局来设置窗口的自动调整大小,因为 TabBarViewController 以编程方式定义为
我正在为 iPad 开发 iOS 应用程序,我使用的是普通图像而不是 @2x 图像,所以这可以在新 iPad 上使用吗?或者必须包含@2x 图像?如有任何帮助,请提前致谢。 最佳答案 您可以在视网膜屏
我正在更新我的应用程序以使用 iPad 视网膜显示屏,但出于某种原因,我的一个 View 不想缩放到 2 倍。正如您在屏幕截图中看到的那样,左侧按钮上的文本可以正确缩放,而右侧的文本仍然以低分辨率显示
CSS 在视网膜屏幕上将 1px 文本阴影加倍为 2px。我只需要 1px。任何解决方案? 0.5px 无效。 最佳答案 我没有尝试过文本阴影,也没有方便的视网膜屏幕,但是对于框阴影 MDN说对于传播
最近几天我阅读了很多关于这个主题的内容,但我没有找到解决方案。我有两个 sprite 集,一个是低质量的正常显示,另一个是高质量的视网膜显示。 我的问题是,我的网站必须响应,图形应根据浏览器窗口调整大
我是一名优秀的程序员,十分优秀!