# scaleX

> Scales the element along the horizontal axis only.

```ts
import { scaleX } from "@sdxc/u/transform";
```

Scales the element along the horizontal axis only. A bare number is a
unitless factor (`1` is unchanged, `1.5` is 150%); a string passes
through unchanged. Composable with every other `transform/` utility.

## Quick reference

Every documented call, beside the CSS it emits.

| Call | CSS |
| --- | --- |
| `u.scaleX(1.5)` | `css({ "--ui-scale-x": "1.5", transform: "... scale(var(--ui-scale-x, 1), var(--ui-scale-y, 1)) ..." })` |

## Examples

### Basic example

Use `scaleX(n)` with a unitless factor to resize an element horizontally while its height stays the same:

```tsx
<div mix={[...]}>
	<div mix={[...]}>
		<div mix={[scaleX(0.5), ...]}>scaleX(0.5)</div>
	</div>
	<div mix={[...]}>
		<div mix={[scaleX(1), ...]}>scaleX(1)</div>
	</div>
	<div mix={[...]}>
		<div mix={[scaleX(1.5), ...]}>scaleX(1.5)</div>
	</div>
</div>
```

### Mirroring horizontally

Use `scaleX(-1)` to flip an element left to right, like pointing an arrow the other way:

```tsx
<div mix={[...]}>
	<div mix={[...]}>
		<div mix={[scaleX(1), ...]}>→ arrow</div>
	</div>
	<div mix={[...]}>
		<div mix={[scaleX(-1), ...]}>→ arrow</div>
	</div>
</div>
```

### Scaling each axis

Combine `scaleX()` with `scaleY()` to resize each axis by its own factor:

```tsx
<div mix={[...]}>
	<div mix={[...]}>
		<div mix={[scaleX(1.25), scaleY(0.75), ...]}>1.25 × 0.75</div>
	</div>
	<div mix={[...]}>
		<div mix={[scaleX(0.75), scaleY(1.25), ...]}>0.75 × 1.25</div>
	</div>
</div>
```

## Using a custom value

Every scale argument also takes a raw CSS value, which passes through untouched.

```ts
u.scaleX("2.75rem")
```

## Applying on a state

Wrap the call in a state utility to scope it to one selector.

```ts
u.hover(u.scaleX(1.5))
```

## Responsive design

Wrap the call in a container query to scope it to one width.

```ts
u.at("md", u.scaleX(1.5))
```

## Signature

```ts
u.scaleX(value: ScaleValue)
```
