Web Development – CSS3 Transform, Transition and Animation

Web Development – CSS3 Transform, Transition and Animation


Web Development CSS3 Transform, Transition and Animation Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Don’t Forget To Subscribe Our Channel Thanks For Watching

How to spin products in 360 degrees in Shopify

How to spin products in 360 degrees in Shopify


Want your Shopify product images to stand out? Well there’s an app for that! Magic 360 How can I try it? It’s easy… Go to apps.shopify.com/magic-360 Click ‘Get App’ Enter your shop name. Click ‘Log In’ Click ‘Install app’ to install Magic 360 on your website Simple! Magic 360 is now installed What next? Check your images are ready Your images need to be numbered in the order you want them to appear on the Shopify product page. Eg: 01, 02, 03 etc Use large versions of your images for spin, magnify & full-screen effects. Shopify will resize images automatically throughout website Your images should turn ever so slightly to create the 360 degree spin First, enter number of images you will use on Magic 360 Settings page To get to the Magic 360 Settings page from your Dashboard… Go to ‘Apps’ Select ‘Magic 360’ installed app You’re now on the Magic 360 Settings page… Go ahead and enter number of images Go to ‘Number of images on X-axis’ Enter number of images used to create 360 degree spin This example uses 36 images Number of images on Y-axis: 1=spins left/right only Enter number of positions spin can move up/down Next, upload 360 spin images to product Go to your product page Click ‘Choose images’ 1. Highlight images you want to upload; 2. Click ‘Open’ You will see your images uploading Once all images uploaded, click ‘Save’ Go to website and refresh product page Your 360 images are now showing on your product page Because you have uploaded large versions of your images, you can spin… magnify… and enlarge to full-screen It takes seconds to customize Magic 360 Choose from over 30 customizations Completely customize Magic 360 how you want Image size, magnifier shape, message + much more… Bring your images to life! You’ve got nothing to lose… And everything to gain Get your free trial here: http://apps.shopify.com/magic-360

JavaScript achievements of the Year 2019 and key Frontend’s trends: FrontEnd news (25 Dec’19)

JavaScript achievements of the Year 2019 and key Frontend’s trends: FrontEnd news (25 Dec’19)


Hi! Let’s talk about JavaScript achievements of
the Year 2019 and key Frontend trends. I’m Anatol, and you are watching the Good
Parts of the Frontend development. If this is your first time here and you want
to learn Frontend and JavaScript, start right now by subscribing, and don’t forget to turn
on the subtitles. [Music playing] Let’s start with the exciting news! According to “GitHub octoverce” and RedMonk’s
Programming Language Ranking, JavaScript is still the #1 programming language! TypeScript is also rocketing up and now sits
at position #12. Bye the way, for the first time, Python has
overtaken Java to take second place. There are several features approved to be
part of the ES2019 specification. Among them are “Array.flatMap”, “String.trimStart”,
and others. JavaScript, as a language, demonstrates continuous
growth. One more feature that is expected to be shipped
in JavaScript is “public and private class fields.” It’s already available in Chrome and Node
and might be delivered to other browsers soon. The project Deno made progress. Therefore, Ryan Dahl presented how to get
started with it. Deno is a safe, secure and reliable alternative
to Node; thus, you might be interested in it. [Music playing] React hooks have been presented as a complementation
to the React context. That might be a game-changer because we can
omit state management libraries (like Redux), and React becomes more framework-ish. Probably, some next year, we will see “react-router”
or “Styled components” to become a part of React. We’ll see. During “Google I/O 2019,” it has been announced
that Googlebot now runs the latest Chromium rendering engine to ensure support for the
newest web platform features. It means that SEO is now becoming much more
comfortable. One more great feature is WebAuthn, password-free
logins API on the web approved by W3C. It is already available in Android, Windows
10, Chrome, Firefox, and Edge. The OpenJS Foundation welcomes two new projects:
AMP and nvm. These are the first projects that are engaged
by the incubation process since the Node.js Foundation and JSF merger! I believe that’s just the beginning. World Wide Web Consortium (W3C) brings a new
language to the Web. Following HTML, CSS and JavaScript, WebAssembly
becomes the fourth language for the Web which allows code to run in the browser. That might change the Web in the following
years. We’ll see. That’s all in my list. What’s about you? In your opinion, what’s the most influenced
on the Frontend this year? Leave your comment down below. [Music playing] If you like this video, give it “thumbs up,”
share it with your friends, subscribe to the channel and watch other episodes. Thanks for watching and Happy New Year!

Jeff Conniff and Tilo Mitra: The Future of YUI CSS

Jeff Conniff and Tilo Mitra: The Future of YUI CSS


Jenny Han Donnelly: And we’re back. Next
up we have Jeff Conniff, who is our resident visual design and interaction design guru
come engineer, walking us through some of the CSS related changes that we have in store,
followed by Tilo Mitra, one of our newest team members who is a former intern as Dav
mentioned, talking about some of the exciting, again, CSS related projects that he is working
on. Jeff Conniff: Thank you Jenny. [applause] Thank you. I’m glad to be here today and
get an opportunity to talk about skinning. I’ve been asked to give a brief bio just
at the beginning. I would like to mention that my lifelong quest for all things visual
and beautiful started very early in my life. My mother was an artist, and she prompted
me. Got my very first opportunity to exhibit a huge full-scale full-color mural. It was
beautiful. Unfortunately it was on the wall of my hallway to my parents’ room. It was
called Exploration in Crayola on Latex Enamel. [laughter] I learned one thing very early on, that there
are critics everywhere. [laughter] It was demanded that I scrub off every one
of those brilliant strokes. Even though I was probably damaged psychologically,
I still went on to get a degree in graphic design and have spent 15+ years ñ I think
that’s the right euphemism, 15+ years ñ doing visual design, interaction design, and
prototyping, and found myself on the YUI team. I’m the author of the dial widget and the
night skin and lots of fun library examples that you may have seen. I’m right now currently working on skinning
with some really brilliant and fun people to work with. I’d like to mention Matt Sweeney
ñ you want to wave your hand back there, Matt? The great Matt Sweeney. [applause] And Anthony Pipkin, is he here? Yep, there’s
Anthony over there. Great guys. [applause] Having a lot of fun. In the animal kingdom, it’s a very critical
skill to be able to blend in to one’s background. So that’s critical for two reasons: these
critters need to be able to blend in and hunt well so that they can eat. That’s critical.
They also need to, for the second reason, they need to be able to hide well so that
they’re not eaten. Those two things. It’s similar in UI skinning, but it’s also a little
bit different. It’s not so much an eat or be eaten proposal, but you really need to
blend in and look like you belong so that you don’t have the sore thumb effect happening
when you’re putting a widget into a UI. Fortunately in YUI we’ve got this great system
for skinning the appearance of things, pages and our widgets. It goes something like this.
It’s very easy. Just in the body tag or anywhere else, other DOM element, you can put in a
skin with theÖ I’m sorry, a class name with the skin there. And then in this case you
don’t need it because sam skin is the default, but in other cases you could put in a filter
that has that same matching name. And that’s all it takes to get the skins and interchange
them. So we have two skins today. One is called
the sam skin, which works great for light backgrounds, and the other one named, for
obvious reasons, the night skin. So we have those two skins today. The only problem with
that is that if you’re working in some sort of application or web page that looks like
this and you want to put, say, a tabview control in that open spot to the left of the cinnamon
roll, so you drop that in, the colors don’t quite cut it. They’re not just right. So
what are you going to do? Well, you’ll have to do some tweaking on that. It becomes really
apparent to us that we need a lot more skins. What are we going to do to get a lot more
skins? Well, the process unfortunately is a little bit tedious. You have to understand
a lot about each of the widgets, or at least the widget that you’re going to put in your
app. You need to look at the CSS and understand where the classes go and where they fall on
the different DOM objects. You need to connect all the dots and put the right values in the
right place to make them look correct for what you’re doing. Now that’s great for one widget, but if you’re
trying to do a skin for the entire library of all of our widgets, that’s a bigger job.
You’re really doing similar work times n widgets. It also helps to have some experience
with visual things and color, and to have spent some time doing some of that is a helpful
thing. Even with that and the patience required to do that, it’s still a little bit like
the process of manually creating the inner works of a wrist watch one at a time. It’s
a lot of work. We tried to figure out what we were going
to do about that, and we looked around at some other people who were trying to solve
the same problem and saw a couple of solutions out there. One of which is a solution where
you look at every individual possible style-able element in your user interface and you give
it a very explicit variable name, and then you provide an input field for whoever’s
going to do this skin for them to enter in their own hex value or their font or their
size of padding or whatever it is. So you’ve got a lot of input fields and a lot of variables.
You can imagine that each time you add something to that space it just gets longer and longer,
so it becomes kind of unwieldy as you can see. That may share the work of producing
skins, but it doesn’t necessarily make it a lot easier. Now, an obvious answer to that would be to
group the variables together and have multiple things point to the same variable so you don’t
have quite so many buckets to deal with, quite so many inputs to fill in the values for.
We saw some of those and you can imagine that you might come up with some names for UI groups
of things that could be commonly shared, like title, or header, and you could color them
this way. But you might find that there are some things that might be a little surprising.
It might be somewhat expected that you’d see that color for title and header behind
a tabview, but on the other hand you might be surprised when you find out that that same
color is also being shared by the range between thumbs in a slider, or maybe even more surprised
to find out that that same color is being used by a progress bar while you’re waiting
for something to load. So you’re having some problems with unexpected consequences from
combining those things together. Another example: you might think a good generic
value to set variable would be for something called clickable. We use a general name, so
you’d say great, I’ll color my buttons dominant because they need to be seen a lot, so I’ll
give them this color. I might not realize that spin controls will also have that dominant
color on those buttons, and I might not realize that the thumbs on sliders are going to have
that same dominant color. You might have expected that, but you might not. What you might really
not expect is that every day in a calendar since it’s clickable, guess what? Gets the
same dominant color. Really an unexpected consequence. In some of these systems you can select and
change every single little piece and it’s just a lot of work. That doesn’t assure that
you get what you want. That reminds me of a story about work. There once was a neighbor
down the street. His name was Bob. Bob lived in a nice home with his wife Sally. Sally
was always after Bob, saying Bob, I think it’s time that you painted the house, Bob,
when are we going to paint the house, Bob we haven’t painted the house in 12 years.
So Bob finally decided that while Sally was going back east to visit family for a couple
of weeks, he’d surprise her and he’d paint the house. So while she was gone, that’s what he did.
He got all the chips. Fortunately Bob doesn’t live in an area where there’s a home owners
association, so he really had total freedom to do whatever he wanted. He could pick any
color, which was great news for Bob because he really loves color. So he has a house that
has a lot of individual pieces that he’s got to decide exactly the relationships and
these colors. He got to work and planned it all out, and he did paint the house while
Sally was gone. On her return, Sally was indeed surprised to see that Bob had painted the
house. Just the fact that Bob had the ability to paint every single piece any way he wanted
to didn’t mean that he was going to get the good relationships and get a good paint job,
and Sally would agree with that too. That brings me to another issue, just like
in UI this is a problem. There’s another principle that I’ve called the whac-a-mole
principle. You all know the game, the mole pops up and your hammer him down, and as soon
as you hammer him down he pops up somewhere else and you hammer him down and it goes over
and over and seems endless that you’re trying to get this thing to stay down. Well, the
same can be true when you’re picking colors and setting things together. Let me show you that. To demonstrate that
pain point I’d like to use my acupuncture diagram. This is a simple example of a widget,
just a menu. It’s sitting on a white background. Say you were going to change this because
you realized that you needed something that was going to be on a green background and
it just didn’t look quite right. You’d think, well, I’d just make it green, no big deal.
Maybe you’ve thought this. But once you got into it you thought well, I’ve got to change
this body of the bottom part to something green, and if I do that then this highlighted
section doesn’t look good so I need to change that. By the way, this blue text on the green
background doesn’t look very good, so I’ll need to change that. And by the way, the border
doesn’t look very good, so I’ll need to change that to green, maybe a little darker.
And this top tab really needs some work too, it can’t stay blue. Then its text of course
can’t be blue, it needs to be green. And the border also has to be green. We haven’t
even gotten into the hover problems ñ you know, if there’s hover and a lot of other
colors have to be selected. Then you step back and you look at it, and
this is the whac-a-mole part, and you say that’s good except I think the body needs
to be a little darker in that menu. So as soon as you change the body color to be something
a little darker, then the text is not readable, so then you have to go back and do the text.
I think this conference only goes for a couple of daysÖ [laughter] Öso I probably can’t really show the full
effect of whac-a-mole. But that gives you an idea. This is what we did, or actually to be more
accurate, what we’re doing. We started with two skins like I mentioned, and we did a little
research and we decided that we would probably need a number of skins that would be pretty
close to the number of unique visual color schemes and designs of apps and webpages on
the internet. So we did some calculations and did some research and found that we’d
need about 29 million. [laughter] Question? Audience member: How did you get this number? Jeff: The question is how did I get that number.
Well, we actually employed some of the same research methods that politicians use frequently. [laughter] I got that off my RSA token. But you can use
any random number generally. [applause] And it seemed plausible so I put it in. [laughter] Thought you’d be fooled by it, but I guess
not. At any rate, we need a lot. Unfortunately people who have the time and the patience
and some of the skills to put these together is a relatively small number, so it’s going
to take a long time to get to 29 million skins. What we had to do was figure out a way to
eliminate a lot of those special skills and a lot of the tedium, and that’s exactly what
we’ve done and are doing. We needed to make this easy. How easy do we need to make it?
Well we need to make it easy enough so that just about anyone can create a skin or their
own skin whenever they need to in a short amount of time. So how to do that? Well we looked around and
the other solutions that we were seeing didn’t seem to be the way we wanted to go, and we
had a different idea so we’re proceeding with that in a different direction. From our
experience in working with color and design we’ve learned that colors are a lot like
people. You could really group all people in the world into three categories. Everyone
knew that, right? [laughter] Three main categories. There are the ones
that seem to always need attention. They always have to be in the limelight, they always have
to be out there and people have to be looking at them. And then there’s the other group
that’s not quite so in your face. You know, they’re important and they have a purpose
but they’re not always out there shouting. And then there’s a third category that seemed
to fade into the background and you don’t really even know they’re there, but they’re
still necessary. The same is true of colors and UI elements.
To give an example of that I’ve put together a test, and don’t worry, this is not graded
but we’ll all be taking this test together. You don’t have to hand in your papers or
put your names on them. In fact this test is made ridiculously easy just to make a point.
I’m going to show you five blocks of color ranging in emphasis from most emphasized to
least emphasized and see if you can pick out which one is which. Grade them from really
dominant to really recessive. Do you need more time? [laughter] Did I make this too easy by stacking them
from brightest to darkest? Maybe I did, okay. All right, so that’s throwing it off. I’ll
mix them up a little bit. What do you think? Need more time? Maybe I made it too easy because they’re
all blues. Maybe if I mixed in some other hues in there it would be more difficult,
so we’ll see. What do you think? Pretty tough? No. Got it. Pretty easy to do. Well, it’s really relationships of colors
and which ones are emphasized and which ones are not. You can take this kind of process
and apply it to text elements as well, or objects on a widget, or on a UI. That’s what
we’ve done, is to create instead of buckets of UI named things to attach skins to, we’ve
created a hierarchy of emphasized color values and then we point the widgets at those generic
values. Let me demonstrate that. You’ll see something
that looks kind of similar to what we saw in the test. We’ve got some boxes there,
they’re labeled, but they’re going from most emphasized item to least. Don’t be fooled
by the fact that the least emphasized one is a wrapper for the others. So what can you
do with this? You can select the key color ñ in other words you don’t have to change
all the color blocks, just pick a key color, let’s say green, and you automatically get
colors of green that are in different emphasis. Really all you’re doing is picking one color.
Want red? Got the same thing. Want a dull red, a dull dark red? So it’s as easy as
using a color picker. You’re establishing this relationship of colors and color buckets. Now there are not just four colors to choose
from, but we’ve really got a whole fully fleshed out set of text of different weights
and gradients and rules and borders in the system. Selecting anything in there changes
everything just at a single click. The second thing that you can do to change
this scheme of emphasis is pick a color scheme. A color scheme is really nothing more than
how those main blocks of color bucket relate to one another. Right now we’re looking at
monochrome, but if you really wanted just a single color as your highest emphasized
color and the rest gray, you could pick the color plus gray color scheme. Then the same
thing happens wherever you go. If you wanted a complementary color scheme
you can do that too. You pick green and you get the complementary color of that. If you
want a dark background. And the last choice down there and more means there can be infinite
number of color schemes. We’re obviously going to start with more than just the four
or five, but you can see very quickly that if you have say 16 million colors in that
color picker and you throw half of them away and you multiply that by even 4, you’re at
29 million possibilities right there. Let’s go back. Whenever you’re trying to
take something visual and aesthetic and you’re trying to create it by math, you run into
some thorny problems because one and two don’t always equal three when you’re dealing with
things like color. There are some problems that we run into. Fortunately Tony Pipkin
ñ if you can stand up again Tony, or wave or something ñ he’s my super hero. I had
cobbled together some code that was sort of doing this, but Tony came in and rewrote some
great methods that are now part of the library. They’re Y.Color, and he’s got some great
things in there that take care of these thorny problems. I’ll let you applaud after you’ve
seen some of those. Let me show you some of those. First is readability.
You can imagine any time you’re changing background colors you’re going to quickly
have problems with readability of text sitting on top of it. For example, this slider changes
only the background color, and you can see if you start doing that you’re going to get
into some things that are pretty hard to read real fast. But fortunately thanks to Tony
and Y.Color, we’ve got getOffset, which really just takes a background color which is the
background hex color there, and offset lightness value, it could also be offset saturation
or hue, and in this case it’s 20 per cent lighter, and now anywhere I move the slider
you can see the text is readable. Which is pretty nice, except when you start getting
toward the top, right? For that situation we’ve got just another minor piece of code
that flips the sign of 20 so that it stays readable no matter where you move. So that’s
getOffset in Y.Color, which was really nice for me to use in this. The next thorny problem is introduced by this
humble gray rectangle who has no color at all. He has no hue. I’m sorry, he does have
hue, but you won’t know it because it has saturation of zero, so he’s plain. He’s
only 50 per cent brightness ñ I mean if he were 100 he’d be white, if he was zero he’d
be black. He’s pretty boring. But a much more festive rectangle is this one. It has
all of the hues from left to right. They’re all 100 per cent saturated, and make special
note that they all have the exact same lightness value of 50 per cent. Now if you squint your eyes and look at that
bottom thing you might see that some of them seem to not be 50 per cent, some of them seem
to be a little darker. In fact if you take that color band and you turn it into a grayscale
image in Photoshop you get something like this, which makes it really obvious that some
of those colors are not appearing to the eyeball to be the same brightness. Why does that matter? Why am I talking about
this? Well if you took two colors out of the color spectrum and say you wanted to use those
two colors in a widget somehow and you had two objects that you wanted to have sitting
next to each other and you wanted to have this system that can change hues to anything
the user wants but you want those two elements to keep the same relative dominance, when
you ran into a combination like yellow and blue one is going to scream and the other’s
going to be quiet. So that’s a problem of brightness. Fortunately we have another thing from Y.Color
which is called getBrightness. This is no getBrightness method happening now, but you
can see as I choose different colors that the comparative lightness between the purple
on the left and say the blue on the right is very different. But in Y.Color now there’s
getSimilarBrightness. Now when I pick a green, and you can see that it gets input on the
first argument, and I tell it to match the lightness of the color on the left, that I
get a different value for green that’s equal in brightness. You can kind of see how this
works out. As we pick different colors around here for the most part, monitorsÖ You can
see we’re maintaining the brightness. Also in Y.Color is a harmony utility, which
in this case gives us getComplementary color. Now when I select say green for instance,
it’s the color on the right, it’s going to give me the complement of green which is
red. Then we use getSimilarBrightness to take that red color and say give us a red that’s
the same lightness as green, and we get this result here. If I pick red then it takes red
and gives me green, and then tones down the green so that it matches the brightness of
the red. These are really nice utilities and I really appreciate Tony’s work on that.
Let’s give him a round of applause. [applause] Those thorny issues are no longer thorny.
If you’d like to look at Y.Color that’s a link to it if you get this presentation. Now that I have the ability to work in that
color space and have confidence that I’m going to get these benefits from Y.Color,
I can get widgets that are hooked up to that color space in intelligent ways so every element
in the widget can then point to its right level of emphasis. Then no matter where I
drive the colors, that emphasis is kept. Let me demonstrate that. If we look for a green, one click and we’ve
got a green monochrome scheme. Pick a different color scheme, maybe complementary, and we
have a green and red color scheme. Pick something over here. Saturated, low saturated, anywhere
you go. You can see that these widgets are all behaving the way you’d expect color-wise. These are real widgets, by the way, this is
not smoke and mirrors. This is the real stuff. We’ve got hover colors also taken care of.
I didn’t have to set any of those at all. All the widgets are now hooked up to this
extended color space that looks like that, and it all behaves well. We’re also doing
a little experimenting with border radius, if you watch the radius on the buttons. And
also padding. These things are very easy to manipulate without having to dig in and set
individual variables everywhere. So that’s how we’re doing that. Since you’re
here, you fit the demographic of people who the first thing you do when you get a new
pen isÖ what? Take it apart, right? So let me show you a little bit about how the color
space is connected up to the widgets. I should remember to mention that you only have to
do this once, and we’ll be doing this before it’s even out there. This, that I’m about
to show you, is not something that has to be done every time you do a skin, it really
is just as easy as picking a color scheme and a color. This is under the hood. Let’s start with a single individual element.
Let’s take the text on a highlighted tab of a tabview widget. Where does that come
from? That comes, of course, from the CSS, but how did that hex value get there? Well
that came because there was a variable that was replaced in a template, and that variable
came from a mapping file where that variable’s mapped to the correctly emphasized place in
that color space that we looked at. That space.block.highest.text.normal is a location in a JSON object, an element
in a JSON object that represents the entire color space. You have space.block.highest.text.normal,
and that’s where the hex value is. Now how did that hex value get there? Well
this whole color space JSON object is represented in the UI that we’ve been looking at. It’s
just the visualization of the color space. That element for that particular string of
text came when we clicked on the bucket for the highest key color and we chose a color
from the color picker. Then smart calculations happen and we got all the color space filled
out with all of its values. So that’s how it’s put together. In summary, we should avoid the hard work.
We should avoid defining everything and the whac-a-mole pain. We’ve taken a different
approach – this is relative levels of emphasis. CSS variables to point to this color space,
and again, this is one time work that we’re taking care of. Under the hood it’s Y.Color.
And really all you’ll have to do is pick a key color and a color scheme and you’ll
have millions of possible skins. Thank you. [applause] I think we have a microphone coming for you. Audience member: Hi. So how is the impact
of this dynamic mechanism effect on the performance? Jeff: Actually all of what you’ve seen will
be put in place just to generate a skin, and then that skin will be used the same way skins
are today. You’ll just reference that and it will automatically load the CSS file for
those. Really, performance is none. Audience member: Okay, second question. Does
this use any less? Jeff: Actually it can use anything to substitute
the value in that mapping file. We’re going to be publishing this and getting feedback
to find out exactly what the right system is for that. Audience member: Thank you. Audience member: Hello. Oh, sorry. Do you
feel like the automation of this constricts your ability to maybe fine tune some of the
details on something, and what are the drawbacks to that? Jeff: No actually, because you can pick any
color to start with as a key color, and you can easilyÖ We’ll be making it so that you
can create your own color scheme, which is the relationship of those four blocks. You
have a lot of flexibility. And then at the end of the day this is just generating a CSS
file that today you would have to go in and edit anyway. We’re not restricting that point.
Then later on we can probably add the ability to tweak individual things. Matt, speak up if you want to add anything
to what I’m saying. Okay. Audience member: Just curious what sort of
timeline you’re looking at for when this will be included in the public release and
all that? Jeff: Actually what you saw today was working
code. We’re going to polish that up just a little bit and make the tool that I have
there that I showed available so that you can create skins sometime in the near future.
Then we’re going to properly format the code and put it actually as part of the library.
Did you want to add anything on that Matt? Matt Sweeney: Yeah, the longer term strategy
is to incorporate it into the build process and stuff, the shorter term is get the skin
generator out there so people can create style sheets and contribute those. Jeff: Yeah, so we can get feedback on that
as well. Audience member: So just to be clear that
if you’re writing a gallery module, say, then before too long you’ll write a CSS template
that will refer to that color space rather than CSS? Jeff: Right, right, once. Audience member: Thank you from the bottom
of my heart. [laughter] Jeff: You’re welcome. And that’ll be once,
you’ll only have to do that one time. Audience member: Hi. Do you have any concept
of a lightness or darkness threshold to where certain elements gain or lose styling? For
example a drop shadow may look good in a medium brightness skin but maybe on a light skin
it might not look quite so right. Do you have anything like that in your skin builder? Jeff: A lot of theÖ Are you asking specifically
about drop shadows, or any color element? Audience member: It would be any color element,
or you know, thickness of borders or things like that. Jeff: We’re looking at thickness of border
too, so we’ll be anxious to hear community feedback on thickness of border. There is
a lot of code in there that handles the relationships between all of those colors and makes sure
that they don’t fall off the radar and you can’t see this part. So yes, we’re handling
that. There’s a lot of really good stuff in Y.Color that’s helping us write smart
code for that. Audience member: Hi. I’m wondering how you
handle spacing between buttonsÖ Over here. If you thought about automatically calculating
the proper spacing between buttons? I find that we have several modals in our application
or other elements on the page, because we don’t have a consistent way of easily padding
between different objects. Are you guys thinking of that too? Jeff: That’s good input, and I’ll make sure
that we think about that, get that in there. We have been working on padding within widgets,
within objects, and that’s good input. We’ll take that as padding between objects. Good.
I mean margins between objects. Audience member: Over here. Will it be possible
to generate your own color combinations? Like say when it generates CSS you canÖ Like you
have the opposite colors and stuff like that. So you generate your own kind of library that
will generate CSS for you? Jeff: I’m not sure I understand. Did you
mean a different color scheme? Audience member: Yeah, you know like you have
the complementary colors, maybe you create your own that will generate CSS for you. Like
you modify the existing library. Jeff: Right. The whole color scheme picker
that I had, the radio buttons on the top left were choices between how the individual major
blocks of color relate to each other. You saw complementary in there, and monochrome,
and color plus gray. It’s wide open, and we’re using all of the Y.Color utilities
for that so you could have triads, you could have split chromatic things. So anything is
open to that. The Y.Color has a whole full library of ways that you can get different
color schemes that can be part of that. Thanks, good question. Audience member: Hi. I’m using slider as
an example for my question. Slider today has several skins which work really, really well,
but it’s awkward to have one theme and select a couple of slider styles for that. So any
thoughtsÖ On some widgets you just have one theme and that’s it, but some widgets like
slider and buttons are candidates for having within one theme different styles per se,
so any thoughts on making that easy so you choose the skin and the different styles of
what component are part of it rather than choosing like a style per component or skin
per component? Jeff: Yeah, the sliders are a little tougher
nut to crack because right now they’re image based. We’re thinking on that one but I don’t
have a good answer for you today. Audience member: Thank you. Audience member: Over here. Audience member: What about accessibility
sort of colors? Will that also be taken care in the options? Jeff: Can you say that again? Audience member: Accessibility colors, like
for color blind and stuff like that for people. Jeff: Accessibility color blindness issues,
yeah. That will be the responsibility of the person who is picking the key color and picking
the color scheme or building your own color scheme, which again, is about this many lines
to say how those blocks relate to each other. Then you can totally control which colors
appear, which hues appear in the color scheme. Audience member: Okay. Jeff: So that’s a good point ñ maybe we
should offer a couple of color schemes specifically designed at visual accessibility. Great, thank
you. Audience member: I have another question. Jeff: Yeah. Audience member: What about if there is a
situation where I want the colors to dynamically change on the user’s choice? I want to give
an application that the user can change the color scheme dynamically, something sort of
design UI based, something like that, which is not CSS file based something, but it’s
all in memory sort of. Will this help in that situation also? Jeff: Dynamically changing color schemes is
probably going to go over my head. Matt: He wants you to show him the tool. Jeff: What’s that? Matt: We’re demonstrating the toolÖ Jenny: Can we get a mic on him please? Jeff: Yeah, can Matt have a mic? Matt: It sounded like you were asking for
something like the tool that Jeff demonstrated. Jeff: I think he means in real time if an
end user wants to do something with an application that will change the color scheme in real
time. Matt: Unless I’m missing it I guess I would
imagine you would build something almost exactly like what you demonstrated there, which was
skinning the widgets on the fly. Jeff: Yeah. Okay. Audience member: I have one question over
here. Audience member: I had the exact same question.
The application that we work on has the capability of user choosing themes, which are nothing
but style sheets. I would probably think that it’ll be useful for us to have like a generator
where I can pick and it can build the style sheets for me using Y.Color. The last question
is related probably. Jeff: That’s exactly what you saw today.
It’s going to be a tool and you’ll be able to do that, press a button, and get a style
sheet. Also you can keep pressing a button and keep making style sheets and then you’ll
have them. Audience member: Okay, thanks. Jeff: I think we should cut off the Q&A now
and give some time to Tilo for his presentation. Thank you very much, those were good questions. [applause] Tilo Mitra: Hey everyone. I want to thank
Jeff, that was a really nice presentation. I just want to take a little bit of time to
give you a really quick look at something that I’ve been working on for a few weeks
after I joined YUI, which is responsive grids. How many people here have used YUI grids at
some point? Okay. How many of you guys are actually using it now in like a project or
something? Okay, that’s pretty good. Yeah, I’ve used YUI grids before obviously,
and I really liked it, but I felt it was always missing responsiveness. Just out of curiosity,
how many of you guys who are using YUI grids have some responsive behavior built into that
grid? Okay, a lot less hands. I wanted to just show you something that I
was working on to solve this problem. I’ve made a version of YUI grids, and this an exampleÖ
Well, let me first talk about the issue here. There are a lot of responsive grids out there
ñ Bootstraps, Zurb, and there are a whole bunch more ñ and I took a step back and thought
about the issue. Matt actually helped me a lot with this. I feel that for a lot of responsive
grids out there, they kind of force a lot of things down your throat. Let’s take Bootstrap as an example. The Bootstrap
grid is a 12 column grid layout, and if you want it to be responsive it has certain media
queries that it feels are right, so usually it’s 480 pixels and below for phones. It
has a tablet media query level, usually 768 pixels to 1024 for the iPad. Then it has a
large desktop media query. Well now you have the Nexus 7 out, we have iPad minis out, and
some of those lines are getting more and more blurry. That’s one issue. The other issue
is this 12 column layout that a lot of grids kind of force down your throat. I wanted to show you something that we’ve
been working on here at YUI, which is this grid builder. We think that a grid should
work to help you build the application that you want, and you shouldn’t be trying to
conform your application into a specific grid. What we have here is a grid builder and you
can choose a bunch of properties here and it automatically generates the CSS for you.
For example, I can take anywhere from a 12 column to a 24 column through a 36 column,
whatever I want. You can choose a specific width, or you can have a fluid or fixed grid.
Let’s see if I canÖ You can choose whether you want to make it responsive or not, and
the CSS here is actually going to be generated on the fly. I have let’s say a 6 column grid,
you’ll see a lot less CSS. The other thing that we were working on is
media query support. Instead of forcing specific media queries down your throat, right now
there are these 4, but the goal is to add more media queries and you can add or remove
the ones that you’re interested in. Let’s just keep them in here for now. I have to
fix that little bug there. The other thing we were working on is responsiveness.
Do you want your grid to be responsive or not responsive? Responsiveness, for certain
behaviors, the grid goes down to 100 per cent collapsible columns under specific screen
width. If we take this now, take the CSS that’s
generated from this, and put it into an example. Here’s a simple page with the grid overlaid
on top of it so you can see what’s going on. It behaves just like a responsive site
would, so you have images there, you have columns that go down 100 per cent width, but
you can also keep grids on mobile devices. So if you have an iPhone and you want something
to be a grid on a smaller screen size, you can do that. We’ve also baked in some support
that was lacking in original YUI CSS which is stuff like margin support, offsets, gutters,
etcetera. I just want to explain how this works. The
whole concept behind this is one class name that we’ve added to the existing YUI grids,
which is yui-g responsive. If you add a yui-g responsive instead of a yui-g, everything
inside that automatically becomes responsive. You can mix and match responsive behavior
with unresponsive behavior, just like we have on this site. Here we have a yui-g responsive
with a yui3-u-1-3, and that gives you responsiveÖ Sorry. Here we have a yui-g responsive with
yui-1-4, and that gives you the responsive behavior of an element that’s one fourth
at higher screen resolutions but at lower screen widths it comes down to 100 per cent.
Whereas in this case, we have a simple yui-g, no responsive behavior, and that maintains
sort of a grid even on smaller screen sizes. This is something that I’m still kind of
working on. One of the issues that I’d like some feedback on, actually, is what happens
to grids between the phone resolution and the desktop resolution. In that tablet space
where I think there’s an opportunity there to have grids that can offer some unique benefitsÖ
For example, let’s take a look at this one fourth column again. If you have thoughts
about this, please come and talk to me because this is still something that we’re working
on. On a tablet you could imagine this becoming two columns and two columns almost like a
little grid, and then on a phone becoming one single column again. That’s something
that we’re working on, seeing how grids can behave on a tablet versus on a phone versus
on a desktop. But the whole idea behind how we’re approaching this is that instead of
giving you one CSS file and saying this is your responsive grid as a lot of other people
do, we’re letting you generate differentÖ letting you essentially customize your grid
to how you see fit and then based on that we might take specific variations and put
them on the CDN as standard CSS files, which we feel are the most common ones that people
would need. This tool is actually out already. As you
can see, you can view it on, it’s on Heroku right now, and we might pull it in to YUI
Library when it’s a bit more fully baked. But I just wanted to give you guys a sneak
peak at it. It’s all written in JavaScript and Node and it’s actually using YUI grids
to generate YUI grids. So yeah, that’s all I had to show you today. [applause] Jenny: You first, over here. Audience member: Hello. Tilo: Oh, sorry. Audience member: So I saw you generating a
CSS we typically use to generate a mark up, and CSS typically is tied with the YUI. So
I couldn’t understand. Could you just go through the CSS which is getting generated? Tilo: Right, so the CSS that’s getting generated
actually is generated through Handlebars. The grid allows you to customize not only,
as you saw, widths and columns, but also the prefix of the CSS itself. Instead of using
yui3-g, if you could use yui3-row, and instead of using yui3-colunm you could use y-column.
Everything is generated using Handlebars, so that’s how it’s working under the hood.
The variables are getting fed into a Handlebars template that generates the CSS for you. That also actually reminds me ñ the grid
is actually, in terms of file size, is actually pretty small because what we say is if you
have responsive behavior then you have media query support, and if you have media query
support then you probably have CSS 3 support in the browser. For everything inside the
media query we use CSS 3 attribute selectors, which lets us essentially group a lot of CSS
styles into a single rule. The CSS that’s generated is actually pretty small. I think
for a 12 column grid it’s about maybe I think it was 9 kb of CSS. I have to double check,
but it was actually smaller than the Bootstrap grid CSS from what I remember. Audience member: If you can use the grid builder
on the Heroku app, couldn’t you just generate CSS inside of the app that you’re actively
creating downloads and things like that? Tilo: Totally, and in the grid builder app
you saw the yellow columns, and that’s actually the CSS getting fed into that yellow column,
that yellow sort of bar. That’s essentially what’s happening in that. Audience member: So how’s the performance
on that like if you’re doing it inside of a whole bunch of views and things like that? Tilo: I haven’t tested performance on that
specifically because I think that grids are something thatÖ It’s probably something
that most people will pull down from CDN, so I don’t have specific performance metrics
on that to show you today. Cool. Okay, cool, thanks. [applause]

Bundle Optimization, React Hooks and Grid CSS: FrontEnd news (21 Nov’18)

Bundle Optimization, React Hooks and Grid CSS: FrontEnd news (21 Nov’18)


Hi! Let’s talk today about Bundle Optimization,
React Hooks and Grid CSS. I’m Anatol and you are watching the Good Parts
of the Frontend development. If this is your first time here and you wanna
learn Frontend and JavaScript, start right now by subscribing and don’t forget to turn
on the subtitles. Let’s start today with the interactive web
performance docs. It’s a new web portal with tools, courses
and interactive demos. It’s about JavaScript (code-splitting, modern
bundles), images (lazy-loading, compression), performance budgets (webpack, Lighthouse CI),
performance measurement, etc. Jeremy Wagner published a guide, titled “Reduce
JavaScript Payloads with Tree Shaking”. Knowing where to begin optimizing your app’s
JavaScript can be daunting and tree shaking might be a good place to start. Evan You previewed Vue version 3 during his
keynote talk at Vue Toronto. In this article, you can read notes of that
talk. As expected it will be faster, smaller, easier. “Webpack Bundle Optimization Helper” is an
online tool that will analyze your bundle and give you actionable suggestions on how
to reduce its size. “HTML Canvas Guide” or “A Code-Driven Guide
to the HTML5 Canvas”. This is a guide to the Canvas API, one of
the best ways to draw graphics dynamically in the browser. [Music playing] In this talk. Peter Marshall explains the main V8 Garbage
Collector features, its implementation challenges and what benefits developers get. “Key Techniques for Fast Websites” from Chrome
Dev Summit. Here you can learn all the performance techniques
you need to know in order to optimize images, web fonts and JavaScript of your site. You probably saw Dan’s React Hooks presentation,
so did I. Here is the follow-up article that it explains
the React Hooks use case in details. Quite useful, take a look. The next point in my list is “Serving Millions
of Users in Real-Time with Node.js and Microservices”. As the author mentioned: “Node.js as a platform
has a few limitations on its own that we have to accept”. You can read this story at Rising Stack blog. One more article regarding this topic is “The
Easiest Way to Debug Node.js – with VS Code”. A developer makes the case that Microsoft’s
VS Code editor provides the best Node debugging experience right now. Have a look. [Music playing] “Prototyping a Smoother Map” by Antin Harasymiv‏
is an overview of how Google Maps (and most other map) systems work, and some explorations
on making zoom smoother. Nic Raboy posted a tutorial “Building Amazon
Alexa Skills With Node.js, Revisited”. In this tutorial, you can read how to create
a skill for Alexa-powered devices using Node and then test it with Mocha and Chai. “CSS Frameworks Or CSS Grid”. What should you use on your project? In this post, Rachel Andrew writes about a
choice between Flex and Grid and cases when Flex is not convenient. Pablo Stanley in his turn posted an article,
namely: “Designing for accessibility is not that hard”. The author provided seven easy-to-implement
guidelines to design a more accessible web. Among them are color contrast, usable focus
state, labels, etc. The last but not least point for today is
a GitHub’s report: “The State of the Octoverse: top programming languages of 2018”. According to it, JavaScript is still on tops
of the list for the language with the most contributors in public and private repositories. [Music playing] If you like this video give it “thumbs up”,
share it with your friends, subscribe to the channel and watch other episodes. Thanks for watching and stay curious.

[#17] What Is CSS?

[#17] What Is CSS?


Styling with CSS has set a lot of time for web developers. Styling of HTML document describes, how HTML element is going to look in a browser. Now, what is CSS? CSS stands for Cascading Style Sheet. It is used to define the style of web page. You can apply style to any element of a web page. You can apply style to any element directly or can use external file for it. Let me show you the basic syntax of CSS rule set. For example, if you want to add style to p element. You have to write it like this way, p then open and closing curly braces. And CSS rule inside it for the color to green and font size to fourteen. The p is the selector and on the left side of the rule set, it is a property and on the right side it is the value. There are three ways of adding style to a project. The first one is Inline. In this way you add the CSS rule set directly inside the element tag like this. This may be used to apply a unique style for a single element. The second is adding Internal style sheet. It goes directly into the head section of a webpage. The third method is adding CSS by external file. And this is the method, we will be using in this course. Link tag is the tag used to add or link external style sheet into your document. And there is no closing tag for this element. Let me show it to you. I need to open the brackets editor. OK. I will continue with simple business page project OK. Lets create a new file with style dot CSS. So all of the CSS will go inside style dot CSS. Let me added to the index dot HTML file, link, relation, style sheet, type would be text and CSS and href CSS and then style dot CSS. So this is the way to add style dot CSS into HTML file. Now we have added our external style dot CSS file In the coming lecture, we will be applying CSS to our simple business web page. See you there. Thanks