So how do you do it?
The fun part
var boldElements = dom["b"].Select(x => x.InnerText).ToList();
var tvShowTitle = dom["div#"main > div > div > div> h3 > a].InnerText;
var boldElements = dom["b"].Select(x => x.InnerText).ToList();
var tvShowTitle = dom["div#"main > div > div > div> h3 > a].InnerText;
CSS3 introduces the “Flex” options that makes aligning elements extremely easy! It is currently supported in all the major browsers (not supported in IE 11 and below);
Let’s say that I want to align four elements in a line:
The CSS:
.container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
}
.item {
background: green;
padding: 5px;
width: 150px;
height: 150px;
margin: 10px;
line-height: 150px;
color: white;
font-weight: bold;
font-size: 3em;
text-align: center;
-ms-border-radius: 30%;
border-radius: 30%;
}
The only new property here is “display: flex”. Not only that flex aligns the elements in a single line it also makes them responsive when the container size changes (overriding the element’s explicit width property;
If you wish to keep the element’s original width you can add the flex-wrap:wrap property which will break the line if needed:
You can reverse the order of the elements that break the line using flex-wrap:wrap-reverse:
You can align the whole line to center or to the first/last item (flex-start/flex-end) using the justify-content property. By default it is set to flex-start:
.container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
There are two more options for justify-content: space-between and space-around which adds equal spaces between each element:
.container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
If you choose space-around then the first and the last elements will also have the same spaces from the borders.
Vertical Alignment
You can vertically align the elements using flex-direction:column.
Using align-items you can control the vertical starting point (the same like justify-content):
.container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
flex-wrap: wrap;
align-items: center;
flex-direction: column-reverse;
}
So far we’ve applied the flex properties only to the elements container. We can also apply some flex properties directly on the elements, like making some item be 3 times bigger than the rest:
.container > .grow {
flex-grow: 3;
}
I’m using the flex-grow property on the wanted item and setting it’s value to 3 as for 3 times bigger.
Flex has more properties that can help you easily align your elements . Go ahead and try!
In the last ALT.NET meetup @Shay Friedman talked about “Chrome Developer Tools Tips & Tricks”. All the audience, myself included were amazed from the features that Shay has shown that neither of us knew.
The Tips & Tricks:
1. Functions navigation in JavaScript source file:
You’re all familiar with this window:
Some of you might know that if you hit Ctrl + P you can open a JS source file from your workspace. However did you know that if you hit Ctrl + Shift + P you can navigate to a function which is included in the opened file!
No more endless scrolling!
2. Style search
This window is also pretty common.
We scroll down in order to figure out which Style messes our element’s css. However did you notice that you can Search (!!!) for a style property or value???
3. Color picker
This is a color property.
Usually in order to change a color you will double-click the area and manually write the new color. However if you click on the colored box itself you will get a color picker dialog!
And if you move the cursor over the page you could even pick a color!!!
4. Disable Cache and reload cache
You remember that time tried your best to hit F5 to refresh the page but had no luck? And then you realized that your cache wasn’t disabled. First and foremost disable it. However if for some reason you still think that your changes are not loaded to the browser you can right click the refresh icon (while the developer tools is open) and try the Hard Reload or the Empty cache and Hard reload it. That should do it.
5. Filtering the network files
If you click on the filter icon in the network tab you could filter all the request’s files by a wanted file type. Hold Ctrl and you can multi select the file types
6. Black box script in Call Stack
When you debug your app and hit a break point you’ll sometimes want to check the call stack window to see previous calls.
Since I use angular this call stack has a lot of angular’s calls which I couldn’t care less about them. However, if I right-click on the angular script file I can select it as a Blackbox script.
And now I won’t see its calls in the call stack window J
If you don’t know some of those features you don’t need to feel embarrassed. Google uses tons of UX best practices in all its products in order to reveal all the available features, but not in Chrome. Here I think they actually tried to hide some of those features. J
If you have more tricks and tips then feel free to comment
In the previous post I explained how the $digest loop works and how to increase performance using the ng-model-options directive. In this post we’ll take a look at ‘one time binding’ feature.
As I mentioned before the $digest loop goes through all the registered watches every time in order to check whether they need to be updated. However not all our scope variables and models should have binding or be updated after they have been initialized, for example: a logo path, a title, names, some constant options that we used ng-repeat for them and so on. All those variables should be initialized and not to be updated until a full page refresh.
One time binding is a feature that was introduced along with ng-model-options in Angular 1.3. In order to set that a scope variable should not be updated all you have to do is add :: before the variable name:
<input type="text" ng-model="name" value="text" />
{{::name}}
{{name}}
Adding it before the scope variable tells Angular not to register a watch on the variable and so decreases the amount of watches for the $digest loop to check which leads to increase in the app’s performance.
Enjoy