324

How can we center a popup window opened via javascript window.open function on the center of screen variable to the currently selected screen resolution ?

Zo Has
  • 12,599
  • 22
  • 87
  • 149

19 Answers19

523

SINGLE/DUAL MONITOR FUNCTION (credit to http://www.xtf.dk - thank you!)

UPDATE: It will also work on windows that aren't maxed out to the screen's width and height now thanks to @Frost!

If you're on dual monitor, the window will center horizontally, but not vertically... use this function to account for that.

const popupCenter = ({url, title, w, h}) => {
    // Fixes dual-screen position                             Most browsers      Firefox
    const dualScreenLeft = window.screenLeft !==  undefined ? window.screenLeft : window.screenX;
    const dualScreenTop = window.screenTop !==  undefined   ? window.screenTop  : window.screenY;

    const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
    const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;

    const systemZoom = width / window.screen.availWidth;
    const left = (width - w) / 2 / systemZoom + dualScreenLeft
    const top = (height - h) / 2 / systemZoom + dualScreenTop
    const newWindow = window.open(url, title, 
      `
      scrollbars=yes,
      width=${w / systemZoom}, 
      height=${h / systemZoom}, 
      top=${top}, 
      left=${left}
      `
    )

    if (window.focus) newWindow.focus();
}

Usage Example:

popupCenter({url: 'http://www.xtf.dk', title: 'xtf', w: 900, h: 500});  

CREDIT GOES TO: http://www.xtf.dk/2011/08/center-new-popup-window-even-on.html (I wanted to just link out to this page but just in case this website goes down the code is here on SO.)

starball
  • 20,030
  • 7
  • 43
  • 238
Tony M
  • 8,088
  • 6
  • 30
  • 32
  • 9
    After some playing around, this does not work as well as I thought. The simpler, excepted answer works much better. This only works if the launching page is maximized. – Bart Sep 19 '13 at 20:02
  • 10
    Uses global variables (width/height), ouch! – Ruben Stolk Jan 14 '14 at 11:34
  • 1
    Why would you need it to work on minimised windows? They won't be visible? – NickG Jan 30 '14 at 11:05
  • 1
    Sorry. not minimized, but smaller than full screen. – Tony M Feb 10 '14 at 19:28
  • 1
    Perhaps try a smaller width and height? `PopupCenter('http://www.xtf.dk','xtf','200','300');` – Tony M May 21 '14 at 21:05
  • Does not work for me with screens that are not the same size, and not really at all in Chrome – adeneo Jun 12 '14 at 16:44
  • 1
    Does not work if you want to open a popup from iframe – Mārtiņš Briedis Jul 15 '14 at 13:27
  • 1
    Doesn't work on triple monitor setup, always put the window on left edge of screen – cdm9002 Mar 19 '15 at 18:59
  • 19
    Original question posted in 2010, original solution posted in 2010. My comment on original solution about not working on dual monitor posted in 2013, my answer for dual monitor posted in 2013. Your comment about triple monitor in 2015. You now need to answer for a triple monitor solution in 2015. At this rate, we will have an answer for 5 monitors in 2020, 6 monitors in 2025, 7 monitors in 2030... let's keep this cycle going! – Tony M Mar 20 '15 at 20:34
  • 3
    @TonyM I have updated the answer. Yes the cycle needs to go on! – Zo Has Oct 20 '15 at 11:42
  • maybe for readibility: if (window.focus) { should be: if (newWindow.focus) { – carlos May 06 '16 at 21:02
  • 1
    @TonyM +1 solution, works for me Thanks :) in some of case like special chars in url, it would be good if encode url with encodeURI(url) or encodeURIComponent(url) as per needs. – Ghanshyam Gohel Jul 15 '16 at 23:21
  • newWindow.focus() causes it to fail if multiple windows are opened. Example, I have a grid, each row has a link that calls this method. If the user neglects to close the opened window and immediately opens another link, it fails. – Mr. C Jul 22 '16 at 15:44
  • You should use window.screenX/window.screenY instead of screen.left/screen.top for Firefox – Xordal Dec 27 '16 at 14:17
  • 1
    I would suggest to use `window.screen` instead of `screen` directly to avoid the error message by linter on `no-restricted-globals` ( @RubenStolk , @tony-m ) – boldnik Jun 20 '17 at 16:07
  • What's the point of checking `if (window.focus)`? Shouldn't you check that the new popup window has a focus method instead? – Nick Litwin Sep 12 '17 at 21:12
  • Don't be confused like I was: if you're testing this with the debugging tools open and taking up half of your screen, the calculated "top" value can go negative resulting in it pressing against the top of your screen. Close your debugging tools and it will work normally. – Cᴏʀʏ Aug 24 '18 at 17:11
  • What is the point of `dualScreenTop`? In my experience dual screen only messes up the x-axis (or is this only because my screens are next to each other?)... – Adam B Oct 28 '18 at 15:28
  • @TonyM this gives a flow error on `document.documentElement.clientWidth` (lack of null check) and also prompts a WebStorm fix for `!== undefined` instead of `!= undefined` to prevent coercive type checking. – fIwJlxSzApHEZIl Nov 14 '18 at 19:26
  • @TonyM also on your `var width` and `var height` declaration you're missing a `window` declaration. It's throwing an ESLint error for `no-restricted-globals`. This is the `screen.width` and `screen.height` declaration respectively. – fIwJlxSzApHEZIl Nov 14 '18 at 22:53
  • This does not work on all screens and only works if the broswer is taking up the whole screen, I posted an answer that works for me every time – Joe Jan 15 '21 at 16:06
355

try it like this:

function popupwindow(url, title, w, h) {
  var left = (screen.width/2)-(w/2);
  var top = (screen.height/2)-(h/2);
  return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
} 
oezi
  • 51,017
  • 10
  • 98
  • 115
  • 21
    This function doesn't work on a dual monitor setup. I've posted a single and dual monitor solution below. – Tony M May 31 '13 at 15:41
  • 1
    I would like to confirm this : var left = (screen.width/2)-(w/2); var top = (screen.height/2)-(h/2); Isn't it will return left=0 and top=0??? Assuming w is equal to screen.width and h is equal to screen.height...Am I right or wrong here? – mutanic Jun 03 '13 at 05:03
  • 1
    @mutanic w/h refer there to the size of the popup, not the screen. – Mahn Aug 25 '13 at 12:54
  • 1
    Thanks @oezi ...Also Use title blank in IE..Neither it will give error – panky sharma Sep 17 '13 at 04:51
  • 1
    what's wrong with your maths? `(screen.width / 2) - (w / 2)` = `(screen.width - w) / 2` => 2 calculations instead of 3 – smnbbrv Jan 20 '14 at 15:29
  • my two pennies worth: var left=((screen.width-w)*0.5)|0, top=((screen.height-h)*0.5)|0; – TheSavage Mar 20 '14 at 19:39
  • 2
    Doesn't center on my second monitor (which is UP from the main one). Answer for dual screen fails as well. – vsync May 05 '14 at 11:14
  • 3
    This won't work if you want to center window in the middle of the browser, rather than the middle of the screen (if for example, the user has their browser resized to half size). To center within the browser replace screen.width & screen.height with window.innerWidth & window.innerHeight – Jonathon Blok Dec 09 '14 at 13:03
  • 1
    All the boolean specs are 'no' by default, so they can be deleted. – Nicolaj Schweitz Jun 19 '15 at 21:50
145

Due to the complexity of determining the center of the current screen in a multi-monitor setup, an easier option is to center the pop-up over the parent window. Simply pass the parent window as another parameter:

function popupWindow(url, windowName, win, w, h) {
    const y = win.top.outerHeight / 2 + win.top.screenY - ( h / 2);
    const x = win.top.outerWidth / 2 + win.top.screenX - ( w / 2);
    return win.open(url, windowName, `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${w}, height=${h}, top=${y}, left=${x}`);
}

Implementation:

popupWindow('google.com', 'test', window, 200, 100);
CrazyTim
  • 6,695
  • 6
  • 34
  • 55
  • This seems to be the technique used by Facebook for the popup on a share button. – Tim Tisdall Feb 25 '16 at 14:43
  • 4
    This worked perfectly for me on dual screen. Even when moving or resizing the window, it says central to the window it's opened from. This should be the accepted answer. Thanks. – Oli B Sep 18 '19 at 11:34
  • 2
    I agree with @OliB -- this works perfectly and solved a recent development issue we had! Should be the accepted answer for 2019. – MrLewk Sep 18 '19 at 11:37
  • Made a modification to extend the capabilities of this function [here](https://stackoverflow.com/a/61257908/10355515). It includes option to set width and height to percentage or ratio. You can also change the options with an object (easier to manage than a string) – SwiftNinjaPro Apr 16 '20 at 19:06
  • Nice and simple solution. In my case it looked better with "outerHeight / 2.7" instead of "outerHeight / 2". Another thing: The parameter name "title" is misleading. It is the name of the window, so winName or so is better and to the point. – Magnus Aug 20 '20 at 18:57
  • @Magnus good point, I have updated the answer to match the spec of `window.open()`. – CrazyTim Aug 21 '20 at 12:24
  • It does not work for me. I have a 3 monitor setup. Upper left and right are standard monitors and bottom left is my laptop's. When the window is on the laptop then popup window is centered but not on any of my standard monitors. – Pascal Sep 14 '21 at 18:13
  • This worked for me, but prefer to use `window.top.inner(Height|Width)` so that if a portion of the page is taken up by something like dev-tools that pane will be ignored and the content will centered against the web page – Grant Humphries Apr 14 '22 at 18:41
23

Source: http://www.nigraphic.com/blog/java-script/how-open-new-window-popup-center-screen

function PopupCenter(pageURL, title,w,h) {
  var left = (screen.width/2)-(w/2);
  var top = (screen.height/2)-(h/2);
  var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
  return targetWin;
} 
Mimouni
  • 3,564
  • 3
  • 28
  • 37
OmnipotentEntity
  • 16,531
  • 6
  • 62
  • 96
19

If you want to center it on the frame you are currently in, I would recommend this function:

function popupwindow(url, title, w, h) {
    var y = window.outerHeight / 2 + window.screenY - ( h / 2)
    var x = window.outerWidth / 2 + window.screenX - ( w / 2)
    return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + y + ', left=' + x);
} 

Similar to Crazy Tim's answer, but doesn't use window.top. This way, it will work even if the window is embedded in an iframe from a different domain.

Taugenichts
  • 1,307
  • 12
  • 19
14

It works very well in Firefox.
Just change the top variable to any other name and try again

        var w = 200;
        var h = 200;
        var left = Number((screen.width/2)-(w/2));
        var tops = Number((screen.height/2)-(h/2));

window.open("templates/sales/index.php?go=new_sale", '', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+tops+', left='+left);
Himanshu
  • 31,810
  • 31
  • 111
  • 133
user1862764
  • 391
  • 3
  • 17
8

Facebook use the following algorithm to position their login popup window:

function PopupCenter(url, title, w, h) {
  var userAgent = navigator.userAgent,
      mobile = function() {
        return /\b(iPhone|iP[ao]d)/.test(userAgent) ||
          /\b(iP[ao]d)/.test(userAgent) ||
          /Android/i.test(userAgent) ||
          /Mobile/i.test(userAgent);
      },
      screenX = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft,
      screenY = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop,
      outerWidth = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.documentElement.clientWidth,
      outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : document.documentElement.clientHeight - 22,
      targetWidth = mobile() ? null : w,
      targetHeight = mobile() ? null : h,
      V = screenX < 0 ? window.screen.width + screenX : screenX,
      left = parseInt(V + (outerWidth - targetWidth) / 2, 10),
      right = parseInt(screenY + (outerHeight - targetHeight) / 2.5, 10),
      features = [];
  if (targetWidth !== null) {
    features.push('width=' + targetWidth);
  }
  if (targetHeight !== null) {
    features.push('height=' + targetHeight);
  }
  features.push('left=' + left);
  features.push('top=' + right);
  features.push('scrollbars=1');

  var newWindow = window.open(url, title, features.join(','));

  if (window.focus) {
    newWindow.focus();
  }

  return newWindow;
}
Roland Soós
  • 3,125
  • 4
  • 36
  • 49
7

My recommendation is to use top location 33% or 25% from remaining space,
and not 50% as other examples posted here,
mainly because of the window header,
which look better and more comfort to the user,

complete code:

    <script language="javascript" type="text/javascript">
        function OpenPopupCenter(pageURL, title, w, h) {
            var left = (screen.width - w) / 2;
            var top = (screen.height - h) / 4;  // for 25% - devide by 4  |  for 33% - devide by 3
            var targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
        } 
    </script>
</head>
<body>
    <button onclick="OpenPopupCenter('http://www.google.com', 'TEST!?', 800, 600);">click on me</button>
</body>
</html>



check out this line:
var top = (screen.height - h) / 4; // for 25% - devide by 4 | for 33% - devide by 3

mr.baby123
  • 2,208
  • 23
  • 12
5

You can use css to do it, just give the following properties to the element to be placed in the center of the popup

element{

position:fixed;
left: 50%;
top: 50%;
-ms-transform: translate(-50%,-50%);
-moz-transform:translate(-50%,-50%);
-webkit-transform: translate(-50%,-50%);
 transform: translate(-50%,-50%);

}
Robert
  • 5,278
  • 43
  • 65
  • 115
Nikhil Mathew
  • 307
  • 3
  • 2
  • "position: sticky" will likely produce better results when you start trying to tweak margins, size, and overall behavior. – JamesHoux Mar 03 '23 at 21:45
5

My version with ES6 JavaScript.
Works well on Chrome and Chromium with dual screen setup.

function openCenteredWindow({url, width, height}) {
    const pos = {
        x: (screen.width / 2) - (width / 2),
        y: (screen.height/2) - (height / 2)
    };

    const features = `width=${width} height=${height} left=${pos.x} top=${pos.y}`;

    return window.open(url, '_blank', features);
}

Example

openCenteredWindow({
    url: 'https://stackoverflow.com/', 
    width: 500, 
    height: 600
}).focus();
Marc B.
  • 116
  • 2
  • 5
4

Here is an alternate version of the aforementioned solution...

const openPopupCenter = (url, title, w, h) => {
  const getSpecs = (w, h, top, left) => {
    return `scrollbars=yes, width=${w}, height=${h}, top=${top}, left=${left}`;
  };

  const getFirstNumber = (potentialNumbers) => {
    for(let i = 0; i < potentialNumbers.length; i++) {
      const value = potentialNumbers[i];

      if (typeof value === 'number') {
        return value;
      }
    }
  };

  // Fixes dual-screen position
  // Most browsers use window.screenLeft
  // Firefox uses screen.left
  const dualScreenLeft = getFirstNumber([window.screenLeft, screen.left]);
  const dualScreenTop = getFirstNumber([window.screenTop, screen.top]);
  const width = getFirstNumber([window.innerWidth, document.documentElement.clientWidth, screen.width]);
  const height = getFirstNumber([window.innerHeight, document.documentElement.clientHeight, screen.height]);
  const left = ((width / 2) - (w / 2)) + dualScreenLeft;
  const top = ((height / 2) - (h / 2)) + dualScreenTop;
  const newWindow = window.open(url, title, getSpecs(w, h, top, left));

  // Puts focus on the newWindow
  if (window.focus) {
    newWindow.focus();
  }

  return newWindow;
}
Mike T
  • 513
  • 5
  • 14
4

(this was posted in 2020)

An extension to CrazyTim's answer

You can also set the width to a percentage (or a ratio) for a dynamic size. Absolute size is still accepted.

function popupWindow(url, title, w='75%', h='16:9', opts){
    // sort options
    let options = [];
    if(typeof opts === 'object'){
        Object.keys(opts).forEach(function(value, key){
            if(value === true){value = 'yes';}else if(value === false){value = 'no';}
            options.push(`${key}=${value}`);
        });
        if(options.length){options = ','+options.join(',');}
        else{options = '';}
    }else if(Array.isArray(opts)){
        options = ','+opts.join(',');
    }else if(typeof opts === 'string'){
        options = ','+opts;
    }else{options = '';}

    // add most vars to local object (to shorten names)
    let size = {w: w, h: h};
    let win = {w: {i: window.top.innerWidth, o: window.top.outerWidth}, h: {i: window.top.innerHeight, o: window.top.outerHeight}, x: window.top.screenX || window.top.screenLeft, y: window.top.screenY || window.top.screenTop}

    // set window size if percent
    if(typeof size.w === 'string' && size.w.endsWith('%')){size.w = Number(size.w.replace(/%$/, ''))*win.w.o/100;}
    if(typeof size.h === 'string' && size.h.endsWith('%')){size.h = Number(size.h.replace(/%$/, ''))*win.h.o/100;}

    // set window size if ratio
    if(typeof size.w === 'string' && size.w.includes(':')){
        size.w = size.w.split(':', 2);
        if(win.w.o < win.h.o){
            // if height is bigger than width, reverse ratio
            size.w = Number(size.h)*Number(size.w[1])/Number(size.w[0]);
        }else{size.w = Number(size.h)*Number(size.w[0])/Number(size.w[1]);}
    }
    if(typeof size.h === 'string' && size.h.includes(':')){
        size.h = size.h.split(':', 2);
        if(win.w.o < win.h.o){
            // if height is bigger than width, reverse ratio
            size.h = Number(size.w)*Number(size.h[0])/Number(size.h[1]);
        }else{size.h = Number(size.w)*Number(size.h[1])/Number(size.h[0]);}
    }

    // force window size to type number
    if(typeof size.w === 'string'){size.w = Number(size.w);}
    if(typeof size.h === 'string'){size.h = Number(size.h);}

    // keep popup window within padding of window size
    if(size.w > win.w.i-50){size.w = win.w.i-50;}
    if(size.h > win.h.i-50){size.h = win.h.i-50;}

    // do math
    const x = win.w.o / 2 + win.x - (size.w / 2);
    const y = win.h.o / 2 + win.y - (size.h / 2);
    return window.open(url, title, `width=${size.w},height=${size.h},left=${x},top=${y}${options}`);
}

usage:

// width and height are optional (defaults: width = '75%' height = '16:9')
popupWindow('https://www.google.com', 'Title', '75%', '16:9', {/* options (optional) */});

// options can be an object, array, or string

// example: object (only in object, true/false get replaced with 'yes'/'no')
const options = {scrollbars: false, resizable: true};

// example: array
const options = ['scrollbars=no', 'resizable=yes'];

// example: string (same as window.open() string)
const options = 'scrollbars=no,resizable=yes';
SwiftNinjaPro
  • 787
  • 8
  • 17
2

The accepted solution does not work unless the browser takes up the full screen,

This seems to always work

  const popupCenterScreen = (url, title, w, h, focus) => {
    const top = (screen.height - h) / 4, left = (screen.width - w) / 2;
    const popup = window.open(url, title, `scrollbars=yes,width=${w},height=${h},top=${top},left=${left}`);
    if (focus === true && window.focus) popup.focus();
    return popup;
  }

Impl:

some.function.call({data: ''})
    .then(result =>
     popupCenterScreen(
         result.data.url,
         result.data.title, 
         result.data.width, 
         result.data.height, 
         true));
Joe
  • 1,316
  • 9
  • 17
1
function fnPopUpWindow(pageId) {
     popupwindow("hellowWorld.php?id="+pageId, "printViewer", "500", "300");
}

function popupwindow(url, title, w, h) {
    var left = Math.round((screen.width/2)-(w/2));
    var top = Math.round((screen.height/2)-(h/2));
    return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, '
            + 'menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=' + w 
            + ', height=' + h + ', top=' + top + ', left=' + left);
}
<a href="javascript:void(0);" onclick="fnPopUpWindow('10');">Print Me</a>

Note: you have to use Math.round for getting the exact integer of width and height.

ByteHamster
  • 4,884
  • 9
  • 38
  • 53
Praveen Kumar
  • 21
  • 1
  • 2
1

This hybrid solution worked for me, both on single and dual screen setup

function popupCenter (url, title, w, h) {
    // Fixes dual-screen position                              Most browsers      Firefox
    const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
    const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
    const left = (window.screen.width/2)-(w/2) + dualScreenLeft;
    const top = (window.screen.height/2)-(h/2) + dualScreenTop;
    return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
}
0

Based on Facebook's but uses a media query rather than user agent regex to calc if there is enough room (with some space) for the popup, otherwise goes full screen. Tbh popups on mobile open as new tabs anyway.

function popupCenter(url, title, w, h) {
  const hasSpace = window.matchMedia(`(min-width: ${w + 20}px) and (min-height: ${h + 20}px)`).matches;
  const isDef = v => typeof v !== 'undefined';
  const screenX = isDef(window.screenX) ? window.screenX : window.screenLeft;
  const screenY = isDef(window.screenY) ? window.screenY : window.screenTop;
  const outerWidth = isDef(window.outerWidth) ? window.outerWidth : document.documentElement.clientWidth;
  const outerHeight = isDef(window.outerHeight) ? window.outerHeight : document.documentElement.clientHeight - 22;
  const targetWidth = hasSpace ? w : null;
  const targetHeight = hasSpace ? h : null;
  const V = screenX < 0 ? window.screen.width + screenX : screenX;
  const left = parseInt(V + (outerWidth - targetWidth) / 2, 10);
  const right = parseInt(screenY + (outerHeight - targetHeight) / 2.5, 10);
  const features = [];

  if (targetWidth !== null) {
    features.push(`width=${targetWidth}`);
  }

  if (targetHeight !== null) {
    features.push(`height=${targetHeight}`);
  }

  features.push(`left=${left}`);
  features.push(`top=${right}`);
  features.push('scrollbars=1');

  const newWindow = window.open(url, title, features.join(','));

  if (window.focus) {
    newWindow.focus();
  }

  return newWindow;
}
Dominic
  • 62,658
  • 20
  • 139
  • 163
0

I had an issue with centering a popup window in the external monitor and window.screenX and window.screenY were negative values (-1920, -1200) respectively. I have tried all the above of the suggested solutions and they worked well in primary monitors. I wanted to leave

  • 200 px margin for left and right
  • 150 px margin for top and bottom

Here is what worked for me:

 function createPopupWindow(url) {
    var height = screen.height;
    var width = screen.width;
    var left, top, win;

    if (width > 1050) {
        width = width - 200;
    } else {
        width = 850;
    }

    if (height > 850) {
        height = height - 150;
    } else {
        height = 700;
    }

    if (window.screenX < 0) {
        left = (window.screenX - width) / 2;
    } else {
        left = (screen.width - width) / 2;
    }

    if (window.screenY < 0) {
        top = (window.screenY + height) / 4;
    } else {
        top = (screen.height - height) / 4;
    }

    win=window.open( url,"myTarget", "width="+width+", height="+height+",left="+left+",top="+top+"menubar=no, status=no, location=no, resizable=yes, scrollbars=yes");
    if (win.focus) {
        win.focus();
    }
}
Doston
  • 579
  • 6
  • 15
0

This would work out based on your screen size

<html>
<body>
<button onclick="openfunc()">Click here to open window at center</button>
<script>
function openfunc() {
windowWidth = 800;
windowHeight = 720;
 var left = (screen.width - windowWidth) / 2;
            var top = (screen.height - windowHeight) / 4;
            var myWindow = window.open("https://www.google.com",'_blank','width=' + windowWidth + ', height=' + windowHeight + ', top=' + top + ', left=' + left);
}
</script>
</body>
</html>
Godwin
  • 400
  • 3
  • 15
-6

.center{
    left: 50%;
    max-width: 350px;
    padding: 15px;
    text-align:center;
    position: relative;
    transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    -ms-transform: translateX(-50%);
    -o-transform: translateX(-50%);   
}