Why wont OnMouseOver Work with my UI?,Preview a UI GameObject with Mouseover

So i am making a CCG(2D collective Card Game) Game and am having issues with the Mouseover Command.
What im trying to do with the script is make it so that when i mouse over the Card that it Enlarges the card as well as moves the card to the center of the screen And then when it is done/No longer over the card it Puts it back to default values.(Scaling & X/Y).

I am fairly new to Unity which is why i thought i would start out with a simple Card Game, With the lack of Good Tutorials on Youtube i have been stuck here.

All the Game Objects are in the Canvas.(Exception of Lighting & Camera)
There is a Box Collider 2D On the Object that i want it to detect. Along with a LayoutElement script & Canvas Group.

CODE:

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;

public class Preview : MonoBehaviour
{

void OnMouseEnter()
{
    GetComponent<CanvasGroup>().blocksRaycasts = false;
    this.transform.localScale += new Vector3(3f, 3f, 3f);
    Debug.Log("Entered");
}

void OnMouseExit()
{
    this.transform.localScale = new Vector3(1f, 1f, 1f);
    Debug.Log("Exited");
    GetComponent<CanvasGroup>().blocksRaycasts = true;
}

}
}

That mouse over function is used for game objects when you want to hover over an enemy and swap from clicker to sword symbol etc.

The new UI and it’s event system is what you’re looking for. Youtube has a pile of stuff to learn on it. You would pass away before you could watch it all.

Here is a script that converts your script to the event system without the raycast block. See below.

What you’re trying to achieve would be better off using animation of the card enlarging, and moving around then it could all be accessed via the mouse enter. You won’t need to block raycasts but simply add in a bool to your mouse over function that waits till the animation is over. Try this tutorial

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class HoverUIEnlarge : MonoBehaviour , IPointerEnterHandler,IPointerExitHandler {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
	public void OnPointerEnter(PointerEventData eventData)
	{
		
		this.transform.localScale += new Vector3(3f, 3f, 3f);
		Debug.Log("Entered");
	}
	public void OnPointerExit(PointerEventData eventData)
	{
		this.transform.localScale = new Vector3(1f, 1f, 1f);
		Debug.Log("Exited");
	
	}
}