npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

q-layout

v0.1.5

Published

A vue component which can make your development efficiency rapidly

Readme

q-layout

CHANGELOG

中文文档

Download

yarn

yarn add q-layout

npm

npm install q-layout

cnpm

cpm install q-layout

Import

import q-layout in the entry file

import Vue from 'vue';
import QLayout from 'q-layout';
import 'q-layout/dist/q-layout.css';
Vue.use(QLayout);

And then you can use the layout component which call q-row anywhere

<q-row>template</q-row>

Why q-layout exists

In the usual development, we build the layout of a webpage by html css or a littile bit javascript, javascript will only be using more in some logics of codes but not the layout

During coding the layout of a webpage, we will code html first and name a className for an element, just like <div class="test"></div>, or naming it by an id, but whatever you should define a sign for an element.

And there is a rule in naming the className for elements which call bem, but if you are using vue, it will be not necessary because vue has a scoped css concept

But you can check that some vue ui components also use the bem naming rule, because it will be much more standard. But actually in the business code,it would be not much standard,the naming in the ui components is for the user who will change the style of the component conventionally,but it is not much more sense to use it in the business code

This is the first problem, Don't you find there is troublesome to name an element in business codes ? If you naming it easy you'd find it is not suitable,if naming it complexly you'd find it is trouble

But the proble can be resolved,we check it later

After you define a sign for an element, you need to code css for it, code css in vue is easy too.

just like this

<style scoped>
.test {
  color: blue;
}
</style>

But when the page's business is complex, there will be a a lot of elements and a lot of classeNames

Usualy we checked the layout of the page will not direct check the code, we will check it by using chrome's tool, and then if we may change the style we should find the sign of the element first and then can change css of the element

It will be not necessary, Image that, if you code css in html, Won't you cut down a step to change css

for example

There is an element which height is 100px

The usual way to code it is like this

<template>
  <div class="element">test</div>
</template>

<script>
export default {};
</script>

<style scoped>
.element {
  height: 100px;
}
</style>

We take full advantage of vue's feature, you can write css by using props

<template>
  <q-row h="100">test</q-row>
</template>

<script>
export default {};
</script>

It will be translated the same as the usual way

<div style="height:100.000px">test</div>

No Style and no Classnames, you don't need to cudgele your brains to think the naming of the className, and you don't need to find the position to change css,you will only need to find the element

And we provide many props to code the layout not only h

Props

We separate css properties by w3c standard classification

Options Explanation

The following documentation just like this

| props | Type | Raw | Default | TranslateType | | ------- | :----: | :-------------: | :-----: | ------------: | | bkColor | String | backgroundColor | '' | pure |

before we check the documentation for props we need know some explanations

props

the same as vue props

type

the same as vue prop's type

raw

the original css property

default

the same as vue prop's default value

translateType

different properties have different translatable result

  • default

to translate property by using the settings's unit and ratio

The default unit is px and the default ratio is 1

you can change that by the config.

for example

<q-row maxh="100">test</q-row>

the result is

<div style="maxHeight:100.000px">test</div>
  • pure

To direct translating property

for example

<q-row color="#000">test</q-row>

the result is

<div style="color:#000">test</div>
  • class

Translate property by setting classNames not styles

for example

<q-row dir="top">test</q-row>

the result is

<div class="q-layout-flexDirection-top">test</div>

and we have built-in class

.q-layout-flexDirection-top {
  flex-direction: column;
}
  • classPure

If property is a boolean will enable class if not will enable pure

for example

if property is a boolean

<q-row border></q-row>

The above generative result will be <div class="q-layout-border"></div>

if property is a string

<q-row border="1px solid #666"></q-row>

The above generative result will be border:1px solid #666 and will not set a className

The following are built-in props

Background

| props | Type | Raw | Default | TranslateType | | ---------- | :----: | :----------------: | :-----: | ------------: | | background | String | background | '' | pure | | bkColor | String | backgroundColor | '' | pure | | bkPosition | String | backgroundPosition | '' | pure | | bkRepeat | String | backgroundRepeat | '' | pure | | bkSize | String | backgroundSize | '' | pure |

Border

| props | Type | Raw | Default | TranslateType | | ------------ | :------------: | :----------: | :-----: | ------------: | | borderTop | String Boolean | borderTop | '' | classPure | | borderRight | String Boolean | borderRight | '' | classPure | | borderBottom | String Boolean | borderBottom | '' | classPure | | borderLeft | String Boolean | borderLeft | '' | classPure | | border | String Boolean | border | '' | classPure | | radius | Number String | borderRadius | '' | default |

Box

| props | Type | Raw | Default | TranslateType | | --------- | :----: | :-------: | :-----: | ------------: | | overflow | String | overflow | '' | pure | | overflowX | String | overflowX | '' | pure | | overflowY | String | overflowY | '' | pure |

Color

| props | Type | Raw | Default | TranslateType | | ------- | :-----------: | :-----: | :-----: | ------------: | | opacity | String Number | opacity | '' | pure |

Dimension

| props | Type | Raw | Default | TranslateType | | ----- | :-----------: | :-------: | :-----: | ------------: | | h | String Number | height | '' | default | | maxh | String Number | maxHeight | '' | default | | minh | String Number | minHeight | '' | default | | w | String Number | width | '' | default | | maxw | String Number | maxWidth | '' | default | | minw | String Number | minWidth | '' | default |

Flex

| props | Type | Raw | Default | TranslateType | Description | | ------- | :-----: | :------------: | :-----: | :-----------: | ----------------------------------------------------: | | dir | String | flexDirection | '' | class | top right bottom left | | justify | String | justifyContent | '' | class | flex-start flex-end center space-between space-around | | align | String | alignItems | '' | class | flex-start flex-end center baseline stretch | | flex | String | flex | '' | class | 1-10 | | center | Boolean | '' | '' | class | justify=center & align=center |

FontSize

| props | Type | Raw | Default | TranslateType | | ---------- | :----: | :--------: | :-----: | ------------: | | fontSize | String | fontSize | '' | default | | fontWeight | String | fontWeight | '' | pure |

Margin

| props | Type | Raw | Default | TranslateType | | ------ | :-----------: | :----------: | :-----: | ------------: | | margin | String Number | margin | '' | default | | mt | String Number | marginTop | '' | default | | mr | String Number | marginRight | '' | default | | mb | String Number | marginBottom | '' | default | | ml | String Number | marginLeft | '' | default |

Padding

| props | Type | Raw | Default | TranslateType | | ------- | :-----------: | :-----------: | :-----: | ------------: | | padding | String Number | padding | '' | default | | pt | String Number | paddingTop | '' | default | | pr | String Number | paddingRight | '' | default | | pb | String Number | paddingBottom | '' | default | | pl | String Number | paddingLeft | '' | default |

Position

| props | Type | Raw | Default | TranslateType | | ---------- | :-----------: | :-----------: | :-----: | ------------: | | position | String | position | '' | pure | | t | String Number | top | '' | default | | r | String Number | right | '' | default | | b | String Number | bottom | '' | default | | l | String Number | left | '' | default | | display | String | display | '' | pure | | float | String | float | '' | pure | | cursor | String | cursor | '' | pure | | va | String | verticalAlign | '' | pure | | zIndex | String | zIndex | '' | pure | | visibility | String | visibility | '' | pure |

Text

| props | Type | Raw | Default | TranslateType | | ------------- | :----: | :-----------: | :-----: | ------------: | | color | String | color | '' | pure | | lh | String | lineHeight | '' | default | | indent | String | textIndent | '' | default | | letterSpacing | String | letterSpacing | '' | default | | wordSpacing | String | wordSpacing | '' | default | | textAlign | String | textAlign | '' | pure | | whiteSpace | String | whiteSpace | '' | pure | | wordBreak | String | wordBreak | '' | pure |

User

| props | Type | Raw | Default | TranslateType | | ----- | :----: | :-------: | :-----: | ------------: | | box | String | boxSizing | '' | pure |

InstallOptions

| Options | Type | Required | Default | Description | | ----------- | :----: | :------: | :-----: | ----------------------: | | unit | String | false | px | css unit | | ratio | String | false | 1 | css ratio | | decimals | String | false | 3 | reserved decimal places | | collections | Object | false | {} | custom css property |

  • unit

css unit which can be px rem vw or more, default value is px

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  unit: 'vw'
});
<q-row h="100"></q-row>

The above generative result will be

<div style="height:100.000vw"></div>
  • ratio

The ratio between the practical value and the setting value, default value is 1

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  unit: 'vw',
  ratio: 7.5
});
<q-row h="100"></q-row>

The above generative result will be

<div style="height:13.333vw"></div>

because 100/7.5 = 13.333

  • decimals

The computing value's reserved decimal, default value is 3

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  unit: 'vw',
  ratio: 7.5,
  decimals: 2
});
<q-row h="100"></q-row>

The above generative result will be

<div style="height:13.33vw"></div>
  • collections

We provide many props that can satisfy many demands, but if you want to add some custom css property or change default css property you can use collections

collections has some configurations

Keep Original Property

The following configurations can change property based on the original property

alias

you can set an alias name for a property which is existing

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  collections: {
    h: {
      alias: 'height'
    }
  }
});
<q-row height="100"></q-row>

so h and height can both translate to

<div style="height:100.000px"></div>

coverage

if you don't need the original property you can use this to coverage the old property

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  collections: {
    h: {
      coverage: 'height'
    }
  }
});
<q-row height="100"></q-row>

now only height can be translated, the property h has been removed

<div style="height:100.000px"></div>

New Property

If you need to configurate some custom properties you can use following configurations raw type default pure class classPure

raw

The original css property, which is required

type

The property's type

The same as the prop's type in vue, which is required

default

The property's default value

The same as the prop's default value in vue, which is required

raw&type&default

The same as default of translateType

wo have collections maxh for maxHeight, we only give an example here

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  collections: {
    maxh: {
      raw: 'maxHeight',
      type: [String, Number],
      default: ''
    }
  }
});
<q-row maxh="100"></q-row>

The above generative result will be

<div style="max-height:100.000px"></div>

And if maxh is a number,it will translate into percent

<q-row :maxh="10"></q-row>

The above generative result will be

<div style="max-height:10%"></div>

pure

The same as pure of translateType

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  collections: {
    family: {
      raw: 'fontFamily',
      type: String,
      default: '',
      pure: ture
    }
  }
});
<q-row family="monospace"></q-row>

The above generative result will be

<div style="font-family:monospace"></div>

class

The same as class of translateType

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  collections: {
    diyClass: {
      raw: 'rawDiyClass',
      type: String,
      default: '',
      class: ture
    }
  }
});
<q-row diyClass="test"></q-row>

The above generative result will be

<div class="q-layout-rawDiyClass-test"></div>

classPure

The same as classPure of translateType

wo have collections border for border, we only give an example here

import Vue from 'vue';
import QLayout from 'q-layout';
Vue.use(QLayout, {
  collections: {
    border: {
      raw: 'border',
      type: [Boolean, String],
      default: '',
      pureClass: ture
    }
  }
});

if property is a boolean

<q-row border></q-row>

The above generative result will be

<div class="q-layout-border"></div>

if property is a string

<q-row border="1px solid #666"></q-row>

The above generative result will be

<div style="border:1px solid #666"></div>

and will not set a className

Code Hints

We using vetur to provide code hints. The above props are all including in the configuration.

If you have set custom property by using alias coverage or custom property you may need add custom attributes, click here to see vetur's docs,click here to see our default attributes