- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前有一些看起来像这样的 CSS:
.crop-image {
background-image: linear-gradient(180deg,
rgba(34,34,34,1),
rgba(34,34,34,0)),
url(https://upload.wikimedia.org/wikipedia/commons/b/bf/Test_card.png);
}
但是,当我尝试通过 JavaScript、jQuery 或 Chrome 中的开发工具访问它时,我得到:
background-image: linear-gradient(rgb(34,34,34),
rgba(34,34,34,0)),
url(https://upload.wikimedia.org/wikipedia/commons/b/bf/Test_card.png);
这是移除方向(180deg
或 to bottom
都被移除)。另一个问题是它正在将第一个 rgba
更改为 rgb
。两者的工作原理相同(没有 Angular 与 180 度或从上到下相同),但会导致 JS 中的解析问题。
这导致我的 JavaScript 出现一些问题,它会动态调整渐变,这意味着如果我更改 CSS,我将不得不更改 JS(即编写 JS 以假定或检查第一个值以查看它是否是一个 Angular 或一种颜色)。
JSFiddle here .
其他问题是 Chrome 将 rgba(x,x,x,1)
更改为 rgb(x,x,x)
,Firefox 将 rgba( x,x,x,0)
到透明
。 (两者都会导致解析问题,但更容易解决)。
有什么方法可以始终如一地获得线性梯度分量吗?还是为了防止浏览器更改我的 CSS?
最佳答案
为什么 JS/jQuery 返回的值与 CSS 中提供的值不同?
jQuery 的 .css()
方法不返回任何属性的指定值。它返回由用户代理根据规范计算的元素的计算样式。这相当于 getComputedStyle
Vanilla JS中的方法。 resolved value这些返回的值不必与指定值相同。它几乎总是* computed value规范中指定。
来自 jQuery Docs : (重点是我的)
Get the value of a computed style property for the first element in the set of matched elements or set one or more CSS properties for every matched element.
Note that the computed style of an element may not be the same as the value specified for that element in a style sheet. For example, computed styles of dimensions are almost always pixels, but they can be specified as em, ex, px or % in a style sheet. Different browsers may return CSS color values that are logically but not textually equal, e.g., #FFF, #ffffff, and rgb(255,255,255).
* - 为什么几乎总是超出这个答案的范围
颜色和渐变的计算值是多少?
根据 MDN :(使用 background-color
作为引用,但所有颜色值的行为都相同)
Computed Value: If the value is translucent, the computed value will be the rgba() corresponding one. If it isn't, it will be the rgb() corresponding one.
我找不到关于 linear-gradient
的任何类似文档描述计算值是什么,但我们可以假设 Chrome 将指定值转换为其最简单的形式,而不会改变渐变的实际含义。因此,当 Angular 或方向为默认值时,它会被剥离。
解决方案是什么?
所以,目前没有办法得到rgba()
使用 .getComputedStyle
时 alpha 为 1 的值或 .css()
(jQuery) 方法。以下是您唯一的选择:
设置初始background-image
将值赋给 JS 中的变量并将其用于任何操作,而不是通过 JS 获取 CSS 值(或者更好的是,直接通过 JS 而不是 CSS 设置值)。
window.onload = function() {
var el = document.querySelector(".crop-image");
var initialBg = "linear-gradient(180deg, rgba(34, 34, 34, 1), rgba(34, 34, 34, 0)), url(https://upload.wikimedia.org/wikipedia/commons/b/bf/Test_card.png)";
el.style.backgroundImage = initialBg;
document.querySelector('.output').textContent = initialBg;
};
.crop-image {
height: 300px;
width: 300px;
}
<div class="crop-image"></div>
<div class="output"></div>
使用接近(不精确)1 的 alpha 值和 180 度的 Angular 值,如 Adjit's answer 中提到的.
或者,解析 CSS 样式表并获取 background-image
属性(property)的值(value)。这个可以做,但是很麻烦,不推荐。
什么正在准备中?
Level 4 Specs表示计算值将始终为 rgba()
颜色,所以也许一旦实现,所有浏览器都会返回 rgba()
值与 alpha 无关。但这仍处于草稿模式,因此可能会发生变化(谁知道呢,它甚至可能会被丢弃)。
还有什么要考虑的吗?
Firefox 返回 rgba(34,34,34,0)
作为transparent
可以被认为是一个bug 因为even as per MDN transparent
maps only to rgba(0,0,0,0)
.然而,它是次要的,因为 alpha = 0 意味着颜色是完全透明的。
The transparent keyword maps to rgba(0,0,0,0).
关于javascript - 当 180 度/顶部/底部时,JS/jQuery 不返回线性渐变 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35733915/
我正在尝试在项目中学习和添加 Angular 国际化。我只能理解 Angular 文档 (https://angular.io/guide/i18n-overview) 的编译时翻译。 我需要这样的东
在我的 Angular 应用程序中,基于登录用户,我想通过显示/隐藏不同的菜单项或允许/禁止某些路由来授予或限制功能。 目前成功登录后,我的 .NET Core API 会返回一个 JWT token
我是 Angular 的新手,目前我已经看过 angular.io 网站提供的一些示例。但是在component decorator在文档中的解释,它指出 Angular components are
这里是service employee-service.service.ts的代码 import { Injectable } from '@angular/core'; import { HttpC
我目前正在使用@angular/http URLSearchParams 类来检索 URL 参数。在 Angular 5 中,注意到这已被弃用,但我没有看到以我当前使用的方式替换 URLSearchP
我目前正在使用@angular/http URLSearchParams 类来检索 URL 参数。在 Angular 5 中,注意到这已被弃用,但我没有看到以我当前使用的方式替换 URLSearchP
如何正确安装 PUG/JADE 到 Angular 2 或更高版本 这样在工作和 AOT 和 JiT 的同时 工作单元和集成测试 并且在创建每个新组件时不会受到太多影响 最佳答案 我看到了很多解决方案
我的 Angular 12 应用程序中有一些通用组件,我计划将其创建为一个 Angular 库,以便其他应用程序也可以使用它。我们有一些应用程序在较低版本的 angular(例如 angular 8/
tl;dr; ng build 删除了包含我编译的自定义库的/dist 文件夹。这会使我项目代码中对该库的所有引用无效,从而导致 ng build 最终失败。我做错了什么? 我关注了documenta
我正在将一些“遗留”(非 typescript )js 库导入到我的 Angular SPA 中。 通常我只是从 cdn 添加一个负载到 index.html 就像: 在 Angular 分量中我只
我有这个 angular 应用程序,它基本上使用了库的概念。 我有 2 个名为 的库Lib1 和 lib2 根据他们所服务的微服务分组。 现在我将这些库导入主应用程序,即 应用1 事情一直到现在。 现
我在我的项目中启用了 angular Universal。我现在想完全删除它。我试图删除以下文件 /server.ts /webpack.server.config.js /src/tsconfig.
我已经有一个 AuthService 在登录时对用户进行身份验证,并且 AuthGuard 在未登录的情况下阻止访问。 某些页面我通过 UserProfile/Role 限制访问,但现在我需要阻止页面
我正在尝试使用 angular、TypeORM、SQLite 和其他组件作为 webpack 构建 Electron 应用程序。 我从在 GitHub 上找到的示例开始我的开发:https://git
我在从 Angular 8 更新到 9 并运行时遇到以下错误 ng 更新@angular/material: Package "@angular/flex-layout" has an incompa
我正在尝试使用 Angular 9,我想创建一个项目,然后创建一个库项目并开始向其中添加我想稍后在 GitHub 上发布的通用模块,并在我的本地使用这些库项目。 相关依赖如下: Angular CLI
我正在尝试使用 Angular 9,我想创建一个项目,然后创建一个库项目并开始向其中添加我想稍后在 GitHub 上发布的通用模块,并在我的本地使用这些库项目。 相关依赖如下: Angular CLI
我正在我的 h1 元素“之前”创建一个小的程式化三 Angular 形图案,但我无法正确地圆 Angular 。右上角没问题,但其他两个有剪裁问题。 这是输出以及形状的放大图像: 使用的代码如下: h
我有一个 Angular 元素,带有自定义标记名 - fancy-button。如何将 fancy-button 嵌入 Angular 应用程序? 我已经尝试了以下方法,但都没有用 - 在 index
我已将我的项目从 angular 5.2.9 升级到 angular 6.0.0-rc.5。 除了包路径中的几个快速 RxJS 修复外,一切看起来都不错。(此链接非常有用:Want to upgrad
我是一名优秀的程序员,十分优秀!