Skip to content

A React component which fits viewport's height, extends 100vh. モバイルブラウザ(とくにSafari)で縦方向に画面いっぱいにdivを広げたい場合に。

Notifications You must be signed in to change notification settings

yamamotok/highwall

Repository files navigation

HighWall - A React Component

Since version 0.4.0, this is an ES module (bundled with Rollup), which should work fine with Vite and others.

Summary

CSS height: 100vh is useful when trying to implement native-app-like mobile web application. However, on mobile Safari for example, it does not work as expected.

This "HighWall" is a React component which realizes height: 100vh by measuring viewport's height every window size change.

React version

Since this component uses hook internally, React version has to be greater than 16.8.0.

How to use

Green will fill up the viewport. Of course, you can set your own class like <HighWall className="myClass">.

import {HighWall} from 'HighWall';

const Page: React.FC = () => {
  return (
    <HighWall style={{backgroundColor: 'green'}}>
      <div>Child component</div>
    </HighWall>  
  );
};

These settings will show debug information on head-up display.

<HighWall debug={true}> // show in default position, leftBottom.
<HighWall debug={{ position: HudPosition.rightTop }}>

image

Advanced

Maybe sometimes you want to set viewport's height to min-height or other properties. This can be realized by setting Fitter function in props.

This sample will set the height to min-height instead of height.

import {HighWall, Fitter} from 'HighWall';

const fitter: Fitter = viewportHeight => ({minHeight: viewportHeight});
<HighWall fitter={fitter}>
</HighWall>

Thanks

This component is inspired by great repos and articles, especially:

About

A React component which fits viewport's height, extends 100vh. モバイルブラウザ(とくにSafari)で縦方向に画面いっぱいにdivを広げたい場合に。

Topics

Resources

Stars

Watchers

Forks