javascript - 将具有颜色的变量分配给 CSS 中的背景属性
问题描述
我正在尝试制作一个应用程序,用户可以在其中更改按钮的 bg 颜色,然后将 CSS 代码从<style>
具有更改背景颜色的标签复制到缓冲区中。对于颜色选择器,我使用http://jscolor.com/。我想我需要像这样为背景属性分配一个带有颜色的变量:background: <?php echo $valueInput; ?>;
但我找不到它存储的值,也不知道如何将它传递给变量。我的代码确实复制了 CSS,但不是一些背景颜色,而是这样:.jscolor{valueElement:'valueInput'}
.
<script>
function copyToClipboard(element) {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(element).text()).select();
document.execCommand("copy");
$temp.remove();
}
</script>
<button class="jscolor{valueElement:'valueInput', styleElement:'button_cont'}" >
Click here to pick a color
</button>
Value: <input id="valueInput" value="ed3330">
<?php $valueInput = ".jscolor{valueElement:'valueInput'}"; ?>
<style type="text/css">
#button_cont {
color: #fff !important;
text-transform: uppercase;
text-decoration: none;
background: <?php echo $valueInput; ?>;
padding: 10px;
border-radius: 5px;
display: inline-block;
border: none;
transition: all 0.4s ease 0s;
margin-left: 10px;
}
#button_cont:hover {
background: #434343;
letter-spacing: 1px;
-webkit-box-shadow: 0px 5px 40px -10px rgba(0,0,0,0.57);
-moz-box-shadow: 0px 5px 40px -10px rgba(0,0,0,0.57);
box-shadow: 5px 40px -10px rgba(0,0,0,0.57);
transition: all 0.4s ease 0s;
}
</style>
<div id="button_cont" >CALL TO ACTION</div>
<button onclick="copyToClipboard('style')">Copy CSS</button>
</div> ```
解决方案
您可以使用 javascript 中的正则表达式替换来做到这一点。我使用 CSS 变量使正则表达式更可靠。
function copyToClipboard(element) {
let currentColor = $("#valueInput").val();
let currentStyle = $(element).text();
let newStyle = currentStyle.replace('--placeholder', "#"+currentColor);
var $temp = $("<input>");
$("body").append($temp);
$temp.val(newStyle).select();
document.execCommand("copy");
$temp.remove();
}
#button_cont {
color: #fff !important;
text-transform: uppercase;
text-decoration: none;
background-color: --placeholder;
padding: 10px;
border-radius: 5px;
display: inline-block;
border: none;
transition: all 0.4s ease 0s;
margin-left: 10px;
}
#button_cont:hover {
background: #434343;
letter-spacing: 1px;
box-shadow: 5px 40px -10px rgba(0, 0, 0, 0.57);
transition: all 0.4s ease 0s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js"></script>
<button class="jscolor{valueElement:'valueInput', styleElement:'button_cont'}">
Click here to pick a color
</button> Value: <input id="valueInput" value="ed3330">
<div id="button_cont">CALL TO ACTION</div>
<button onclick="copyToClipboard('style')">Copy CSS</button>
推荐阅读
- python - 在熊猫中将一列日期时间和字符串转换为句点
- java - 在列表中排列数据
- php - php curl:Rest API Post XML
- swift - 为什么响应总是 {"detail":"Unsupported media type \"text/plain\" in request."} 在 swift 中?
- android - 在 Android Studio 中启动新项目
- php - get_bloginfo() 不在页脚上回显 - Wordpress
- android - 不遵守 Google Play 开发者计划政策
- javascript - 添加了关键道具 || 警告:列表中的每个孩子都应该有一个唯一的“关键”道具
- rabbitmq - 1 个队列上的 RabbitMQ 2 侦听器做一项工作(第一个和第二个侦听器做它)
- ios - ios sdk 操作指令ForLanguage:language unitSystem array empty