Creating a CSS linear gradient based on two points relative to a rectangle
This was the way I solved it!
If you look at the GIF I have attached which illustrates the points I am using in my calculations. The red line is the gradient line in the center of the rectangle and the black points are the start and end points of the gradient line. The two other points (black and white) is the user controlled points that the user can drag around any way he likes. The two red dots are the closest position on the line relative to each user controlled point (perpendicular line points, p1 and p2).
I get the distance between the perpendicular line points and the gradient line start and end points. And then to calculate the percent value needed for the CSS linear-gradient value, I add the two distances, dived them by the gradient line length and multiply the value by 100.
ax = ((p1.x - gradientLine.point1.x) * (gradientLine.length / 2)) / (gradientLine.point2.x - gradientLine.point1.x);
ay = ((p1.y - gradientLine.point1.y) * (gradientLine.length / 2)) / (gradientLine.point2.y - gradientLine.point1.y);
percentValue = (((ax + ay) / line.length) * 100);
To get the value for the second parameter in the linear-gradient value I just do kind of the same thing, except I subtract 100 with the calculate value.
ax = ((p2.x - gradientLine.point2.x) * (gradientLine.length / 2)) / (gradientLine.point1.x - gradientLine.point2.x);
ay = ((p2.y - gradientLine.point2.y) * (gradientLine.length / 2)) / (gradientLine.point1.y - gradientLine.point2.y);
percentValue = 100 - ((((ax + ay) / gradientLine.length) * 100));
This way I get two percent values and can easily construct my CSS linear-gradient value consisting off the angle of the two user controlled points plus the two percent values I calculate:
background: linear-gradient([angle]deg, black [percentValue1]%, white [percentValue2]%)
Creating a CSS linear gradient based on two points relative to a rectangle
This was the way I solved it!
If you look at the GIF I have attached which illustrates the points I am using in my calculations. The red line is the gradient line in the center of the rectangle and the black points are the start and end points of the gradient line. The two other points (black and white) is the user controlled points that the user can drag around any way he likes. The two red dots are the closest position on the line relative to each user controlled point (perpendicular line points, p1 and p2).
I get the distance between the perpendicular line points and the gradient line start and end points. And then to calculate the percent value needed for the CSS linear-gradient value, I add the two distances, dived them by the gradient line length and multiply the value by 100.
ax = ((p1.x - gradientLine.point1.x) * (gradientLine.length / 2)) / (gradientLine.point2.x - gradientLine.point1.x);
ay = ((p1.y - gradientLine.point1.y) * (gradientLine.length / 2)) / (gradientLine.point2.y - gradientLine.point1.y);
percentValue = (((ax + ay) / line.length) * 100);
To get the value for the second parameter in the linear-gradient value I just do kind of the same thing, except I subtract 100 with the calculate value.
ax = ((p2.x - gradientLine.point2.x) * (gradientLine.length / 2)) / (gradientLine.point1.x - gradientLine.point2.x);
ay = ((p2.y - gradientLine.point2.y) * (gradientLine.length / 2)) / (gradientLine.point1.y - gradientLine.point2.y);
percentValue = 100 - ((((ax + ay) / gradientLine.length) * 100));
This way I get two percent values and can easily construct my CSS linear-gradient value consisting off the angle of the two user controlled points plus the two percent values I calculate:
background: linear-gradient([angle]deg, black [percentValue1]%, white [percentValue2]%)
Separating line of linear gradient at bottom left corner
You can try it like below with multiple background:
html { min-height:100%; background: linear-gradient(to bottom right,transparent 49.8%, red 50%) left bottom / 2000px /* Keep this always big to have the same angle*/ 300px /* adjust this to control the angle. angle = acrtan(300/2000) */ no-repeat, blue;}
swift split css linear-gradient using regex
Can you try this expression? This should get you what you wanted in groups
linear-gradient\((\d+)deg|,\s+(?:(?:rgba\((.*?)\)).+?(\d+)%)+
Two linear gradients layers on div
I don't believe you can layer two gradients on top of each other like that if they are all solid colors.
However, you can use some transparency and a bit of creative thinking to get your desired effect.
Your background-color
, is already red, so replace all the references to red in your first gradient with transparent
. Now you've got a pattern of stripes that are green and transparent. The transparent stripes appear red since that's the background color.
Then do a similar color-transparent stripe pattern for your second gradient: blue and transparent.
That ends up giving us our pattern backwards from how you want it, so the final step is to swap the two gradients, so the blue stripes are on top of the green ones.
div { height: 30px; background-color: rgb(255, 0, 0); background-image: repeating-linear-gradient(135deg, transparent, transparent 10px, rgb(0, 0, 255) 10px, rgb(0, 0, 255) 14px), repeating-linear-gradient(45deg, transparent, transparent 10px, rgb(0, 255, 0) 10px, rgb(0, 255, 0) 20px);}
<div class="one"></div>
Is this possible to create 2-axis 4 color gradient in css (bilinear gradient)?
mask
combined with linear-gradient
can do it:
.box {
height: 200px;
width: 300px;
background: linear-gradient(to right, rgb(238, 252, 83), rgb(120, 239, 197))
}
.box::before {
content: "";
display: block;
height: 100%;
background: linear-gradient(to right, rgb(253, 67, 205), rgb(74, 68, 215));
-webkit-mask: linear-gradient(to bottom,#0000, #000);
mask: linear-gradient(to bottom,#0000, #000);
}
<div class="box"></div>
Related Topics
Using 'Order' Property to Position Flex Item Between Siblings
Inset-Shadow on HTML5 Canvas Image
Show Text When the Cursor Hovers Over an Image
Use JavaScript in Order to Set the Current Percentage of a CSS Animation
How to Conditionally Change CSS Styles with Js
How to Have HTML-Webpack-Plugin Generate <Style> Elements from CSS
Getting the Rgb Values for a CSS/HTML Named Color in JavaScript
Detecting Load of <Link> Resources
Click Event Doesnt Work in Safari Mobile for Some HTML Content
How to Get JavaScript Variable Value into CSS
Javascript: How to Determine How Much User Scrolls After Reaching the End of a Page
Disable Double Tap Zoom/Resize on Safari iOS12***
How to Set a Single Value of Transform While Leaving the Other Values
Document.Body.Scrollheight Yielding Two Different Results in Firefox/Chrome
In Android Webview, am I Able to Modify a Webpage's Dom