我有一个包含多个元素的固定菜单。我正在尝试找到一种方法,使所有这些元素根据背景颜色更改颜色。
元素是
#page::before,
.logo-scroll
Run Code Online (Sandbox Code Playgroud)
这两个元素都有白色边框(无填充)
主导航.main-navigation及其边框的链接为白色
白色的标识。我也有黑色版本。
我的网站由3种颜色组成,黑色,白色和黄色。
当背景部分为黄色或白色时,我希望将这些项目切换为黑色。
该网站正在进行中,但您可以在这里查看:https : //www.sheree-new.shereewalker.com
我已经尝试过使用徽标
https://eduardoboucas.com/blog/2017/09/25/svg-clip-path-logo-colour.html
但无法使其正常工作。我为元素尝试了混合混合模式,但在黄色时使线条变为蓝色。我试图做混合混合模式,然后使用去饱和或灰度滤镜,但是没有运气。
一个问题可能无法解决,但我想也许有一个插件可以在Wordpress中处理此问题?
基本上我需要的是所有元素的 https://codepen.io/whatthephuc/pen/QQagBj
标头包含左右nav元素:
<div class="logo-scroll">
<div class="scroll-text">
<a href="/home"><img width="53px" height="260px" src="/wp-content/uploads/2019/07/sheree-walker-web-design-edinburgh-vertical-01.svg"/></a>
</div>
</div>
<header id="masthead" class="site-header">
<nav id="site-navigation" class="main-navigation">
<button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false"><?php esc_html_e( 'Primary Menu', 'sheree_walker' ); ?></button>
<?php
wp_nav_menu( array(
'theme_location' => 'menu-1',
'menu_id' => 'primary-menu',
) );
?>
</nav><!-- #site-navigation -->
</header><!-- #masthead -->
Run Code Online (Sandbox Code Playgroud)
CSS
header#masthead {
height: calc(100vh - 60px);
width: 75px;
position: fixed;
float: right;
right: 30px;
top:30px;
}
#site-navigation {
transform: rotate(90deg);
transform-origin: top left;
position: relative;
right: -75px;
width: calc(100vh - 60px);
}
.main-navigation li {
float: left;
position: relative;
text-align: center;
width: 33.33%;
padding: 23px 20px 21px 20px;
font-size: 23px;
font-family: 'NeurialGrotesk';
}
.main-navigation li {
border-bottom: 2px solid white;
}
.main-navigation li:nth-child(n+1) {
border-right: 2px solid white;
}
.main-navigation a {
color: white;
letter-spacing: .5px;
}
#page::before {
content: "";
position: fixed;
top: 30px;
bottom: 30px;
left: 30px;
right: 30px;
border: 2px solid white;
pointer-events: none;
}
.logo-scroll {
position: fixed;
left: 30px;
top: 30px;
bottom: 30px;
border: 2px solid white;
width: 75px;
}
.scroll-text {
position: fixed;
}
Run Code Online (Sandbox Code Playgroud)
所有部分的类别均为黄色或白色-默认背景为黑色。
任何有关合适插件的帮助或建议都将非常有用。
**编辑-如果将其应用于背景色,则将是完美的选择
https://github.com/kennethcachia/background-check
我也尝试过这种方法,但是也会随机产生背景色
contrast();
function contrast() {
var R, G, B, C, L;
$( "main-navigation a" ).each(function() {
R = (Math.floor(Math.random() * 256));
G = (Math.floor(Math.random() * 256));
B = (Math.floor(Math.random() * 256));
$( this ).css( 'background-color', 'rgb(' + R + ',' + G + ',' + B + ')' );
C = [ R/255, G/255, B/255 ];
for ( var i = 0; i < C.length; ++i ) {
if ( C[i] <= 0.03928 ) {
C[i] = C[i] / 12.92
} else {
C[i] = Math.pow( ( C[i] + 0.055 ) / 1.055, 2.4);
}
}
L = 0.2126 * C[0] + 0.7152 * C[1] + 0.0722 * C[2];
if ( L > 0.179 ) {
$( this ).css( 'color', 'black' );
} else {
$( this ).css( 'color', 'white' );
}
});
}
Run Code Online (Sandbox Code Playgroud)
这是使用javascript控制文字颜色的一种非常基本的方法。
您可以根据滚动高度精确控制要更改颜色的位置。
var p = document.querySelector('p');
var d = document.querySelectorAll('div');
var colors = ['white', 'red', 'black'];
var offset = 0.025;
var scrollHeight = document.documentElement.scrollHeight-innerHeight;
window.addEventListener('scroll', function () {
var scroll = scrollY/scrollHeight;
p.style.color = colors[0];
var h = 0;
for (var i=1; i<d.length; i++) {
h += d[i-1].offsetHeight;
if (scroll > (h/scrollHeight)-offset) p.style.color = colors[i];
}
});Run Code Online (Sandbox Code Playgroud)
body {
margin: 0;
}
div {
}
.black {
background: black;
height: 150vh;
}
.yellow {
background: yellow;
height: 100vh;
}
.white {
background: white;
height: 200vh;
}
p {
color: white;
position: fixed;
}Run Code Online (Sandbox Code Playgroud)
<p>I'll change color on scroll</p>
<div class="black"></div>
<div class="yellow"></div>
<div class="white"></div>Run Code Online (Sandbox Code Playgroud)
这是使用 JS + CSS 的一个非常基本的实现,它将彩色子项添加到滚动调整大小时的导航块中:
addEventListener("scroll", fixNavigation);
addEventListener("resize", fixNavigation);
if (document.readyState === "complate") fixNavigation();
else addEventListener("load", fixNavigation);
function fixNavigation() {
[...document.querySelectorAll("#nav>.nav-background")].forEach(item => item.remove());
var nav = document.getElementById("nav");
var scrolled = document.documentElement.scrollTop;
var currentHeight = 0;
document.querySelectorAll(".box").forEach(function(box) {
var navBackground = document.createElement("div");
navBackground.className = "nav-background";
nav.appendChild(navBackground);
navBackground.setAttribute("style", `top: ${currentHeight - scrolled}px; background: ${box.getAttribute("other-color")};`);
currentHeight += box.offsetHeight;
});
}Run Code Online (Sandbox Code Playgroud)
body {
margin: 0;
}
#nav {
position: fixed;
top: 0px;
left: 0px;
bottom: 0px;
width: 40px;
}
.box {
width: 100%;
height: 100px;
}
.red {
background: #ff8888;
}
.green {
background: #a2ffa2;
}
.blue {
background: #7171ff;
}
.nav-background {
pointer-events: none;
position: absolute;
height: 100px;
right: 0;
left: 0;
}Run Code Online (Sandbox Code Playgroud)
<div id="nav">
</div>
<div class="box red" other-color="purple"></div>
<div class="box green" other-color="black"></div>
<div class="box blue" other-color="yellow"></div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
324 次 |
| 最近记录: |