JQuery를 사용하여 :before css 선택기의 너비 속성 변경
이미지가 들어간 페이지가 있는데 CSS selectors 전에 :를 사용해서 스타일링을 했습니다.
이미지는 동적이므로 고정된 너비가 없으므로 규칙의 너비를 동적으로 설정해야 합니다.
JQuery를 이용해서 클라이언트 쪽에서 하고 싶습니다.
정:
.column:before{
width: 300px;
float: left;
content: "";
height: 430px;
}
.column{
width: 500px;
float: right;
padding: 5px;
overflow: hidden;
text-align: justify;
}
클래스의 너비 속성만 변경할 수 있는 방법:before
JQuery를 사용하는 셀렉터(그리고 그것이 없는 셀렉터는 아님)?
의사 수업의 규칙에 직접 접근할 수 있는 jQuery-way는 없다고 생각하지만, 당신은 항상 새로운 규칙을 추가할 수 있습니다.style
문서 머리 부분에 대한 요소:
$('head').append('<style>.column:before{width:800px !important;}</style>');
저도 이 문제를 해결하는 플러그인을 한 번 본 기억이 있는데 아쉽게도 처음 구글링에서 찾을 수 없었습니다.
의사 요소는 섀도 DOM의 일부이므로 수정할 수 없습니다(그러나 해당 값을 쿼리할 수 있습니다).
하지만, 여러분은 때때로 예를 들어, 수업을 이용함으로써 그것을 극복할 수 있습니다.
jQuery
$('#element').addClass('some-class');
CSS
.some-class:before {
/* change your properties here */
}
이는 쿼리에는 적합하지 않을 수 있지만 때때로 이 패턴을 달성할 수 있음을 보여줍니다.
유사 요소의 값을 얻으려면 다음과 같은 코드를 사용해 보십시오.
var pseudoElementContent = window.getComputedStyle($('#element')[0], ':before')
.getPropertyValue('content')
의사 요소는 DOM의 일부가 아니므로 jQuery나 자바스크립트로 조작할 수 없습니다.
그러나 허용된 답변에서 지적된 대로 JS를 사용하여 유사 요소의 스타일링을 종료하는 스타일 블록을 추가할 수 있습니다.
자인이가 정답입니다.pseudo-selector를 통해 요소를 선택할 수는 없지만 를 사용하여 스타일시트에 새 규칙을 추가할 수 있습니다.
당신에게 도움이 될만한 걸 만들었어요
var addRule = function(sheet, selector, styles) {
if (sheet.insertRule) return sheet.insertRule(selector + " {" + styles + "}", sheet.cssRules.length);
if (sheet.addRule) return sheet.addRule(selector, styles);
};
addRule(document.styleSheets[0], "body:before", "content: 'foo'");
http://fiddle.jshell.net/MDyxg/1/
아주 멋지게 하기 위해(그리고 정말로 질문에 대답하기 위해) 저는 그것을 다시 롤아웃하고 jQuery-plugin으로 포장했습니다(그러나 jquery는 여전히 필요하지 않습니다.
/*!
* jquery.addrule.js 0.0.1 - https://gist.github.com/yckart/5563717/
* Add css-rules to an existing stylesheet.
*
* @see http://stackoverflow.com/a/16507264/1250044
*
* Copyright (c) 2013 Yannick Albert (http://yckart.com)
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php).
* 2013/05/12
**/
(function ($) {
window.addRule = function (selector, styles, sheet) {
styles = (function (styles) {
if (typeof styles === "string") return styles;
var clone = "";
for (var p in styles) {
if (styles.hasOwnProperty(p)) {
var val = styles[p];
p = p.replace(/([A-Z])/g, "-$1").toLowerCase(); // convert to dash-case
clone += p + ":" + (p === "content" ? '"' + val + '"' : val) + "; ";
}
}
return clone;
}(styles));
sheet = sheet || document.styleSheets[document.styleSheets.length - 1];
if (sheet.insertRule) sheet.insertRule(selector + " {" + styles + "}", sheet.cssRules.length);
else if (sheet.addRule) sheet.addRule(selector, styles);
return this;
};
if ($) $.fn.addRule = function (styles, sheet) {
addRule(this.selector, styles, sheet);
return this;
};
}(window.jQuery));
사용법은 매우 간단합니다.
$("body:after").addRule({
content: "foo",
color: "red",
fontSize: "32px"
});
// or without jquery
addRule("body:after", {
content: "foo",
color: "red",
fontSize: "32px"
});
https://gist.github.com/yckart/5563717
한 가지 옵션은 이미지에서 속성을 사용하고 jQuery를 사용하여 수정하는 것입니다.그런 다음 CSS에서 해당 값을 취합니다.
HTML (참고로 내가 가정하는 것은.column
가div
무엇이든 될 수 있습니다):
<div class="column" bf-width=100 >
<img src="..." />
</div>
jQuery:
// General use:
$('.column').attr('bf-width', 100);
// With your image, along the lines of:
$('.column').attr('bf-width', $('img').width());
그런 다음 CSS에서 이 값을 사용하려면 다음과 같이 하십시오.
.column:before {
content: attr(data-content) 'px';
/* ... */
}
이렇게 하면 특성 값을 다음에서 가져옵니다..column
, 앞에 발라주세요.
출처: CSS 특성 (이전 예를 참고), jQuery 특성.
기본 클래스에서 속성 상속을 시도할 수 있습니다.
var width = 2;
var interval = setInterval(function () {
var element = document.getElementById('box');
width += 0.0625;
element.style.width = width + 'em';
if (width >= 7) clearInterval(interval);
}, 50);
.box {
/* Set property */
width:4em;
height:2em;
background-color:#d42;
position:relative;
}
.box:after {
/* Inherit property */
width:inherit;
content:"";
height:1em;
background-color:#2b4;
position:absolute;
top:100%;
}
<div id="box" class="box"></div>
볼트클락은 jQuery를 사용한 후 :::before, :::fore와 같은 CSS 의사 요소를 선택하고 조작하는 것에 대한 답변에서 다음과 같이 말합니다.
다른 실제 DOM 요소처럼 브라우저에서 CSS를 통해 렌더링되지만 의사 요소 자체는 DOM의 일부가 아니므로 jQuery로 선택하고 조작할 수 없습니다.
pseudo CSS selector를 사용하는 대신 jQuery로 스타일을 설정하는 것이 최선일 수 있습니다.
언급URL : https://stackoverflow.com/questions/10061414/changing-width-property-of-a-before-css-selector-using-jquery
'programing' 카테고리의 다른 글
Angular로 댓글을 쓸 수 있는 방법이 있습니까?소스를 볼 때 보이지 않도록 JS (0) | 2023.10.17 |
---|---|
ESLint에서 여러 권장 구성 확장 (0) | 2023.10.17 |
MySQL 스크립트 명령줄에 매개 변수 전달 (0) | 2023.10.17 |
information_schema를 사용합니다.선택 검색에서 열 (0) | 2023.10.17 |
MS SQL 스크립트를 Mysql 및 Oracle로 변환 (0) | 2023.10.17 |