Mastering Small Details in Branding Projects

Post pobrano z: Mastering Small Details in Branding Projects

We all know this piece of popular wisdom: “The devil is in the details”. Designers all know how true it is. Obviously, a poorly designed project will not be saved by thoughtfully designed details, but a well-designed project can be ruined by overlooked details.

This is particularly true for branding projects, that’s the reason why we have to hire a professional brand design agency for important projects. This kind of agency knows the importance of consistency and carefulness in branding design.

Don’t go wild in your font choice

Ask any graphic designer, he will tell you that typography is crucial to any good printed design. This also goes for digital projects, of course.

When you choose the typefaces that you will use in your branding project, make sure that you don’t go over two fonts, maximum three. You can make some tests to see how well they match, then stick to it. Having different fonts on packages than on your letterheads or banners is out of question.

Remember, your clients should be able to recognize your brand at first look, even if your design is in black-and-white.

Stay consistent with colors

The advice given above about font use can also apply to colors. Yes, you can use crazy and bold colors, but you should use it consistently and make sure you stay recognizable.

Clients associate a brand with colors. To be more accurate, they associate a brand with a color AND a color scheme. This means that you should be careful when adding new colors to your branding’s color scheme, as it can have a big impact on the brand.

Stick to your narrative

Your brand tells a story that your clients and prospects should instantly understand by the messages you are sending them. For example, nothing says environment-friendly like craft or recycled paper.

Each choice you are making, whether it’s the way you package your product or the medium chosen communicate, should follow that narrative and assure your clients of your branding.

Mastering Small Details in Branding Projects

Post pobrano z: Mastering Small Details in Branding Projects

We all know this piece of popular wisdom: “The devil is in the details”. Designers all know how true it is. Obviously, a poorly designed project will not be saved by thoughtfully designed details, but a well-designed project can be ruined by overlooked details.

This is particularly true for branding projects, that’s the reason why we have to hire a professional brand design agency for important projects. This kind of agency knows the importance of consistency and carefulness in branding design.

Don’t go wild in your font choice

Ask any graphic designer, he will tell you that typography is crucial to any good printed design. This also goes for digital projects, of course.

When you choose the typefaces that you will use in your branding project, make sure that you don’t go over two fonts, maximum three. You can make some tests to see how well they match, then stick to it. Having different fonts on packages than on your letterheads or banners is out of question.

Remember, your clients should be able to recognize your brand at first look, even if your design is in black-and-white.

Stay consistent with colors

The advice given above about font use can also apply to colors. Yes, you can use crazy and bold colors, but you should use it consistently and make sure you stay recognizable.

Clients associate a brand with colors. To be more accurate, they associate a brand with a color AND a color scheme. This means that you should be careful when adding new colors to your branding’s color scheme, as it can have a big impact on the brand.

Stick to your narrative

Your brand tells a story that your clients and prospects should instantly understand by the messages you are sending them. For example, nothing says environment-friendly like craft or recycled paper.

Each choice you are making, whether it’s the way you package your product or the medium chosen communicate, should follow that narrative and assure your clients of your branding.

Scaling CSS: Two Sides of a Spectrum

Post pobrano z: Scaling CSS: Two Sides of a Spectrum

The subject of scaling CSS came up a lot in a recent ShopTalk Show with Ben Frain. Ben has put a lot of thought into the subject, even writing a complete book on it, Enduring CSS, which is centered around a whole ECSS methodology.

He talked about how there are essentially two solutions for styling at scale:

  1. Total isolation
  2. Total abstraction

Total isolation is some version of writing styles scoped to some boundary that you’ve set up (like a component) in which those styles don’t leak in or out.

Total abstraction is some version of writing styles that are global, yet so generic and re-usable, that they have no unintended side effects.

Total isolation might come from <style scoped> in a .vue file, CSS modules in which CSS class selectors and HTML class attributes are dynamically generated gibberish, or a CSS-in-JS project, like glamerous. Even strictly-followed naming conventions like BEM can be a form of total isolation.

Total abstraction might come from a project, like Tachyons, that gives you a fixed set of class names to use for styling (Tailwind is like a configurable version of that), or a programmatic tool (like Atomizer) that turns specially named HTML class attributes into a stylesheet with exactly what it needs.

It’s the middle ground that has problems. It’s using a naming methodology, but not holding strictly to it. It’s using some styles in components, but also having a global stylesheet that does random other things. Or, it’s having lots of developers contributing to a styling system that has no strict rules and mixes global and scoped styles. Any stylesheet that grows and grows and grows. Fighting it by removing some unused styles isn’t a real solution (and here’s why).

Note that the web is a big place and not all projects need a scaling solution. A huge codebase with hundreds of developers that needs to be maintained for decades absolutely does. My personal site does not. I’ve had my fair share of styling problems, but I’ve never been so crippled by them that I’ve needed to implement something as strict as Atomic CSS (et al.) to get work done. Nor at at any job I’ve had so far. I see the benefits though.

Imagine the scale of Twitter.com over a decade! Nicolas has a great thread where he compares Twitter’s PWA against Twitter’s legacy desktop website.

The legacy site’s CSS is what happens when hundreds of people directly write CSS over many years. Specificity wars, redundancy, a house of cards that can’t be fixed. The result is extremely inefficient and error-prone styling that punishes users and developers alike.

The post Scaling CSS: Two Sides of a Spectrum appeared first on CSS-Tricks.

GraphQL is Everywhere!

Post pobrano z: GraphQL is Everywhere!

I find GraphQL extremely fun and empowering tech to work with, even as a novice just getting started. You’ve probably heard the elevator pitch before: it allows you to ask for exactly the data you need whenever you need it (probably at the component level), and it arrives as lovely JSON data for your usage.

I see it used as part of modern website builds all the dang time. The overall vibe is, „I want to do whatever I want on the front end, and that actually allows for more back-end choices as well.” And by „whatever” on the front end, that generally means a fancy SPA-ish JavaScript-powered thing or a static-site generator-ish thing.

Here’s a quick smattering of articles that are everywhere these days. Instead of the actual article titles, I’ll rename with the stack parts.

GraphQL is certainly in the new-and-hip category, but as ever, everything old is new again. Check out Query by Example, a language from the 1970’s:

.....Name: Bob
..Address:
.....City:
....State: TX
..Zipcode:

Resulting SQL:

SELECT * FROM Contacts WHERE Name='Bob' AND State='TX';

The post GraphQL is Everywhere! appeared first on CSS-Tricks.

GraphQL is Everywhere!

Post pobrano z: GraphQL is Everywhere!

I find GraphQL extremely fun and empowering tech to work with, even as a novice just getting started. You’ve probably heard the elevator pitch before: it allows you to ask for exactly the data you need whenever you need it (probably at the component level), and it arrives as lovely JSON data for your usage.

I see it used as part of modern website builds all the dang time. The overall vibe is, „I want to do whatever I want on the front end, and that actually allows for more back-end choices as well.” And by „whatever” on the front end, that generally means a fancy SPA-ish JavaScript-powered thing or a static-site generator-ish thing.

Here’s a quick smattering of articles that are everywhere these days. Instead of the actual article titles, I’ll rename with the stack parts.

GraphQL is certainly in the new-and-hip category, but as ever, everything old is new again. Check out Query by Example, a language from the 1970’s:

.....Name: Bob
..Address:
.....City:
....State: TX
..Zipcode:

Resulting SQL:

SELECT * FROM Contacts WHERE Name='Bob' AND State='TX';

The post GraphQL is Everywhere! appeared first on CSS-Tricks.

An Overview of Render Props in React

Post pobrano z: An Overview of Render Props in React

An Overview of Render Props in React

Using render props in React is a technique for efficiently re-using code. According to the React documentation, „a component with a render prop takes a function that returns a React element and calls it instead of implementing its own render logic.” To understand what that means, let’s take a look at the render props pattern and then apply it to a couple of light examples.

The render props pattern

In working with render props, you pass a render function to a component that, in turn, returns a React element. This render function is defined by another component, and the receiving component shares what is passed through the render function.

This is what this looks like:

class BaseComponent extends Component {
  render() {
    return <Fragment>{this.props.render()}</Fragment>;
  }
}

Imagine, if you will, that our App is a gift box where App itself is the bow on top. If the box is the component we are creating and we open it, we’ll expose the props, states, functions and methods needed to make the component work once it’s called by render().

The render function of a component normally has all the JSX and such that form the DOM for that component. Instead, this component has a render function, this.props.render(), that will display a component that gets passed in via props.

Example: Creating a counter

See the Pen React Render Props by Kingsley Silas Chijioke (@kinsomicrote) on CodePen.

Let’s make a simple counter example that increases and decreases a value depending on the button that is clicked.

First, we start by creating a component that will be used to wrap the initial state, methods and rendering. Creatively, we’ll call this Wrapper:

class Wrapper extends Component {
  state = {
    count: 0
  };

  // Increase count
  increment = () => {
    const { count } = this.state;
    return this.setState({ count: count + 1 });
  };

  // Decrease count
  decrement = () => {
    const { count } = this.state;
    return this.setState({ count: count - 1 });
  };

  render() {
    const { count } = this.state;

    return (
      <div>
        {this.props.render({
          increment: this.increment,
          decrement: this.decrement,
          count: count
        })}
      </div>
    );
  }
}

In the Wrapper component, we specify the methods and state what gets exposed to the wrapped component. For this example, we need the increment and decrement methods. We have our default count set as 0. The logic is to either increment or decrement count depending on the method that is triggered, starting with a zero value.

If you take a look at the return() method, you’ll see that we are making use of this.props.render(). It is through this function that we pass methods and state from the Wrapper component so that the component that is being wrapped by it will make use of it.

To use it for our App component, the component will look like this:

class App extends React.Component {
  render() {
    return (
      <Wrapper
        render={({ increment, decrement, count }) => (
          <div>
            <div>
              <h3>Render Props Counter</h3>
            </div>
            <div>
              <p>{count}</p>
              <button onClick={() => increment()}>Increment</button>
              <button onClick={() => decrement()}>Decrement</button>
            </div>
          </div>
        )}
      />
    );
  }
}

Example: Creating a data list

The gain lies in the reusable power of render props, let’s create a component that can be used to handle a list of data which is obtainable from an API.

See the Pen React Render Props 2 by Kingsley Silas Chijioke (@kinsomicrote) on CodePen.

What do we want from the wrapper component this time? We want to pass the source link for the data we want to render to it, then make a GET request to obtain the data. When the data is obtained we then set it as the new state of the component and render it for display.

class Wrapper extends React.Component {
  state = {
    isLoading: true,
    error: null,
    list: []
  };

  fetchData() {
    axios.get(this.props.link)
      .then((response) => {
        this.setState({
          list: response.data,
          isLoading: false
        });
    })
    .catch(error => this.setState({ error, isLoading: false }));
  }

  componentDidMount() {
    this.setState({ isLoading: true }, this.fetchData);
  }

  render() {
    return this.props.render(this.state);
  }
}

The data link will be passed as props to the Wrapper component. When we get the response from the server, we update list using what is returned from the server. The request is made to the server after the component mounts.

Here is how the Wrapper gets used:

class App extends React.Component {
  render() {
    return (
      <Wrapper
        link="https://jsonplaceholder.typicode.com/users"
        render={({ list, isLoading, error }) => (
          <div>
            <h2>Random Users</h2>
            {error ? <p>{error.message}</p> : null}
            {isLoading ? (
              <h2>Loading...</h2>
            ) : (
              <ul>{list.map(user => <li key={user.id}>{user.name}</li>)}</ul>
            )}
          </div>
        )}
      />
    );
  }
}

You can see that we pass the link as a prop, then we use ES6 de-structuring to get the state of the Wrapper component which is then rendered. The first time the component loads, we display loading text, which is replaced by the list of items once we get a response and data from the server.

The App component here is a class component since it does not manage state. We can transform it into a functional stateless component.

const App = () => {
  return (
    <Wrapper
      link="https://jsonplaceholder.typicode.com/users"
      render={({ list, isLoading, error }) => (
        <div>
          <h2>Random Users</h2>
          {error ? <p>{error.message}</p> : null}
          {isLoading ? (
            <h2>Loading...</h2>
          ) : (
            <ul>{list.map(user => <li key={user.id}>{user.name}</li>)}</ul>
          )}
        </div>
      )}
    />
  );
}

That’s a wrap!

People often compare render props with higher-order components. If you want to go down that path, I suggest you check out this post as well as this insightful talk on the topic by Michael Jackson.

The post An Overview of Render Props in React appeared first on CSS-Tricks.

How to Create a Rain Photo Effect Action in Adobe Photoshop

Post pobrano z: How to Create a Rain Photo Effect Action in Adobe Photoshop

Final product image
What You’ll Be Creating

In this tutorial, you will learn how to create an amazing rain photo effect in Adobe Photoshop. I will explain everything in so much detail that anyone can create it, even those who have just opened Photoshop for the first time. 

The effect shown above is the one I will show you how to create in this tutorial. If you would like to create the even more advanced rain effect shown below, using just a single click and in only a few minutes, then check out my Dark Knight Photoshop Action.

Action final result

What You’ll Need

To recreate the design above, you will need the following resources:

1. How to Start Creating an Action

First, open the photo that you want to work with. To open your photo, go to File > Open, choose your photo, and click Open. Now, before we get started, just check a couple of things:

  1. Your photo should be in RGB Color mode, 8 Bits/Channel. To check this, go to Image > Mode.
  2. For best results, your photo size should be 2000–4000 px wide/high. To check this, go to Image > Image Size.
  3. Your photo should be the Background layer. If it is not, go to Layer > New > Background from Layer.
Checking image size and mode

2. How to Create the Rain

Step 1

In this section, we are going to create the rain. Go to Layer > New > Layer to create a new layer and name it Temp_1.

Creating new layer

Step 2

Now press D on your keyboard to reset the swatches. Then, go to Edit > Fill and set Contents to Foreground Color, Mode to Normal, and Opacity to 100%.

Filling layer

Step 3

Go to Filter > Noise > Add Noise. Set the Amount to 20% and Distribution to Uniform, and check the Monochromatic option.

Adding noise filter

Step 4

Now go to Filter > Filter Gallery > Artistic > Paint Daubs and set the Brush Size to 5, Sharpness to 0, and Brush Type to Wide Blurry.

Adding paint daubs filter

Step 5

Go to Filter > Filter Gallery > Texture > Grain and set the Intensity to 45, Contrast to 85, and Grain Type to Soft.

Adding grain filter

Step 6

Now go to Image > Auto Tone. Then, go to Image > Adjustments > Threshold and set the Threshold Level to 128.

Adjusting threshold

Step 7

Go to Select > Color Range and set Select to Highlights, Fuzziness to 20%, and Range to 190.

Making selection

Step 8

Now go to Layer > Layer Mask > Reveal Selection to add a layer mask that reveals the selected area of the layer.

Adding layer mask

Step 9

Right-click on the layer mask and choose Apply Layer Mask. Then, press Control-T on your keyboard and set the Width and Height of the layer to 103% as shown below:

Transforming layer

Step 10

Now go to Filter > Blur > Motion Blur and set the Angle to 45° and Distance to 20 px.

Adding motion blur filter

Step 11

Press Control-J on your keyboard to duplicate this layer. Then, go to Filter > Blur > Gaussian Blur and set the Radius to 0.5 px.

Adding gaussian blur filter

Step 12

Now Control-click on the Temp_1 layer to select both layers at the same time and press Control-E on your keyboard to merge them into one layer. Then, name this layer Rain_1.

Merging layers

Step 13

Press Control-J on your keyboard to duplicate this layer. Then, press Control-T and set the Width and Height of the layer to 135% and the Angle to -1° as shown below:

Transforming layer

Step 14

Now press Control-J on your keyboard twice to duplicate this layer twice. Then, Shift-click on the Rain_1 copy layer to select all layers in between, and press Control-E to merge them into one layer.

Duplicating and merging layers

Step 15

Control-click on this layer thumbnail to make a selection of this layer. Then, go to Layer > Layer Mask > Reveal Selection to add a layer mask that reveals the selected area of the layer.

Adding layer mask

Step 16

Now press Control-J on your keyboard twice to duplicate this layer twice. After that, Shift-click on the Rain_1 copy 3 layer to select all layers in between, and press Control-E to merge them into one layer.

Duplicating and merging layers

Step 17

Now go to Filter > Blur > Gaussian Blur and set the Radius to 1 px.

Adding gaussian blur filter

Step 18

Press Control-T on your keyboard and set the Angle to -3° as shown below:

Transforming layer

Step 19

Now press Control-J on your keyboard five times to duplicate this layer five times. Then, Shift-click on the Rain_1 copy 5 layer to select all layers in between, and press Control-E to merge them into one layer.

Duplicating and merging layers

Step 20

Control-click on this layer thumbnail to make a selection of this layer. Then, go to Layer > Layer Mask > Reveal Selection to add a layer mask that reveals the selected area of the layer.

Adding layer mask

Step 21

Now Right-click on the layer mask and choose Apply Layer Mask. Then, Control-click on this layer thumbnail to make a selection of this layer again. After that, go to Layer > Layer Mask > Reveal Selection to add a layer mask that reveals the selected area of the layer.

Adding layer mask

Step 22

In the Properties panel, set the Density of the layer mask to 80%.

Changing layer mask density

Step 23

Now Right-click on the layer mask and choose Apply Layer Mask. Then, change the Opacity of this layer to 80%, name it Rain_2, and drag it just below the Rain_1 layer in the Layers panel.

Changing opacity

Step 24

Press Control-J on your keyboard to duplicate this layer. Then, drag this layer to the top of the layers in the Layers panel. After that, go to Edit > Transform > Flip Horizontal and then to Edit > Transform Flip Vertical to flip this layer both horizontally and vertically.

Flipping layer

Step 25

Now press Control-T on your keyboard and set the Width and Height of the layer to 150% as shown below:

Transforming layer

Step 26

Press Control-A on your keyboard to make a selection of the whole canvas. Then, go to Layer > Layer Mask > Reveal Selection to add a layer mask that reveals the selected area of the layer.

Adding layer mask

Step 27

Now Right-click on the layer mask and choose Apply Layer Mask. Then, press Control-T and set the Width and Height of the layer to 180% and the Angle to -2° as shown below:

Transforming layer

Step 28

Now go to Filter > Blur > Gaussian Blur and set the Radius to 5 px.

Adding gaussian blur filter

Step 29

Name this layer Rain_3 and drag it just below the Rain_2 layer in the Layers panel.

Arranging layers

Step 30

Now select the Rain_1 layer and go to Layer > Layer Mask > Reveal All to add a layer mask that reveals the whole layer. Then, press D on your keyboard to reset the swatches and go to Filter > Render > Clouds.

Adding clouds filter

Step 31

Now repeat the previous step for the Rain_2 and Rain_3 layers.

Adding clouds filter

3. How to Make the Final Adjustments

Step 1

In this section, we are going to make some final adjustments. Select the Rain_1 layer, go to Layer > New Adjustment Layer > Curves to create a new selective color adjustment layer and name it Color Look.

Creating new curves adjustment layer

Step 2

Now Double-click on this layer thumbnail and in the Properties panel enter the settings below:

Adjusting curves

Step 3

Press D on your keyboard to reset the swatches. Then, go to Layer > New Adjustment Layer > Gradient Map to create a new gradient map adjustment layer and name it Overall Contrast.

Creating new gradient map adjustment layer

Step 4

Now change the Blending Mode of this layer to Overlay and set the Opacity to 21%.

Changing blending mode and opacity

Step 5

Go to Layer > New Adjustment Layer > Levels to create a new levels adjustment layer, and name it Overall Brightness.

Creating new levels adjustment layer

Step 6

Now Double-click on this layer thumbnail and, in the Properties panel, enter the settings below:

Adjusting levels

Step 7

Go to Layer > New Adjustment Layer > Hue/Saturation to create a new hue/saturation adjustment layer and name it Overall Saturation.

Creating new hue and saturation adjustment layer

Step 8

Now Double-click on this layer thumbnail and, in the Properties panel, set the Saturation to +22.

Adjusting saturation

Step 9

Press Control-Alt-Shift-E on your keyboard to make a screenshot, and then press Control-Shift-U to desaturate this layer. Then, go to Filter > Other > High Pass and set the Radius to 2 px.

Adding high pass filter

Step 10

Now change the Blending Mode of this layer to Overlay and name it Overall Sharpening.

Changing blending mode

You Made It!

Congratulations, you have succeeded! Here is our final result:

Final result

If you would like to create the even more advanced rain effect shown
below, using just a single click and in only a few minutes, then check
out my Dark Knight Photoshop Action.

The action will create highly detailed, stunning photo
effects from your photos with no work at all from your side! You simply
brush over your photo with a
color and play the action. It’s really that simple! The action
will do all the work for you, leaving you fully layered and customizable
results that you can further modify.

The action is made so that every time you run the action you will get a unique result,
even if you use the same brushed area. The action will always
create a unique variation of rain, rocks, and textures, so you can create an
unlimited number of
results! The action also creates 20 preset color looks that you can
choose from.

The action comes with a detailed video tutorial that demonstrates how to use the action and customize the results to get the most out of the effect.

Action final result

You may also like:

Agregator najlepszych postów o designie, webdesignie, cssie i Internecie